Author: Frankie Jarrett (page 1 of 3)

Experimenting with magic return methods on WordPress filters

I was catching up on some of the specifics of the new default theme that shipped with WordPress 4.7, Twenty Seventeen.

When I saw this:

function childtheme_front_page_sections() {
    return 6;
}
add_filter( 'twentyseventeen_front_page_sections', 'childtheme_front_page_sections' );

We’ve all seen it a thousand times. There’s a filter that just needs a basic value, but since add_filter requires a callback function, we have to go out of our way to define one.

Annoying. Especially when you want to just return something basic, like an integer.

Have you ever done this before?

add_filter( 'twentyseventeen_front_page_sections', 6 );

No? Liar.

We’ve all done this by accident. Why? Because it’s intuitive! It’s a developer API that makes total sense when passing through simple values. Well, like it or not, WordPress wants a callback function – always.

Alright, so I thought I’d experiment a little with the callStatic magic method in PHP and see if I could create a pattern to expand on the helper functions that are already in WordPress for the sole purpose of  being used as filter callbacks.

And if you didn’t know about those yet, well, you’re welcome:

__return_true()
__return_false()
__return_null()
__return_zero()
__return_empty_string()
__return_empty_array()

So, I created a class called Returner where you can define the type and value you want to return directly in the method name itself:

add_filter( 'twentyseventeen_front_page_sections', 'Returner::int__6' );

Pretty cool!

Alright, time for the caveats.

You can’t use Returner unless you have PHP 5.3+, and if you have 5.3 then you might as well be using a closure, and if you’re using a closure… well, it’s only like 6 additional characters:

add_filter( 'twentyseventeen_front_page_sections', function() { return 6; } );

In the end, I don’t think my magical class is very practical, but it was still a fun experiment. I especially think the method for doing indexed array output was clever, though real-world application for that is probably pretty rare. Ha! Go figure.

Enjoy.

My first 13 weeks without e-mail push notifications

13 weeks ago today my wife and I were experiencing an exciting life event for the very first time: child labor.

Of course my wife was especially experiencing it! As I held her hand and sat with her for hours and hours in that hospital room, all I could think about was making sure she was being comforted so she knew she wasn’t alone.

We were both so excited to meet our son.

But I quickly realized something else was vying for my attention. And it was coming from my front-left pants pocket…

Read more →

Introducing the Strong Password Generator plugin for WordPress

Today I released the Strong Password Generator plugin for WordPress.

Last week I released a plugin called Expire Passwords which is meant to harden site security by requiring certain users to change their passwords on a regular basis.

The plugin got some early users straight away, one of whom suggested that it might also be nice to give users a way to generate a strong password, making it even easier to reset it when prompted.

What a great idea! So great, in fact, that I thought it could really be a standalone feature and plugin in it’s own right.

Read more →

Introducing the Expire Passwords plugin for WordPress

Today I released a new plugin for WordPress called Expire Passwords.

This latest product is a continuation on my streak of other plugin releases that also deal with the topic of user session security.

The idea here is pretty simple.

If you have registrations open on your WordPress site, chances are there is a decently-sized group of users that have simply gone MIA. They have accounts, and they might come back later, but you’re just not sure when that will be.

The fact of the matter is, the more active login accounts you have on your site, the more potential opportunities there are for break-ins. And once a hacker is authenticated inside WordPress with the right kind of capabilities, the more opportunities there are to do some real damage.

Read more →

So you want to be a web developer, huh?

I get this question all the time:

Hey man, how can I learn to do what you do?  -Random citizen

And I can probably guess why they are asking it too.

Read more →

The problem with relative time calculations in bash date strings

Today I was writing a bash script that needed to reference a time in the past relative to the current UTC date.

For instance, if today is March 31st, 2015 UTC, what month was it exactly one month ago?

Answer: February

However, I found it was less than trivial to actually get the correct answer using a relative time calculation with date.

Read more →

How to connect Apple TV to a hotel Wi-Fi network

Whenever my wife and I take an extended vacation I always bring along our Apple TV.

At the end of a long day filled with adventure and fun it’s nice to just snuggle up together and watch your favorite show on Netflix or rent a new release comedy.

I’ve found that hotel television is still so primitive and annoying. The on-demand movie rentals are limited and very pricey, the regular programming is usually in standard definition, and you’re forced to channel surf without a guide. Ain’t nobody got time for that!

When I book a hotel I always make sure there is free Wi-Fi and that they say there are “flat screens” in every room, this tells me that there must be an HDMI input on it somewhere.

Ah, but my Apple TV doesn’t have a browser! So when the hotel Wi-Fi splash screen pops up asking for confirmation that I “Agree to their terms of use” or to enter some sort of special login, I can’t.

It seems we’re left with no choice but to do some friendly hacking to circumvent this annoying speed bump! 🙂

Read more →

WordPress challenge: Building a web app from scratch

For the past 7 years I’ve been building websites, themes and plugins for WordPress. It’s really fun, and I love it.

But there are some avenues that I have yet to explore. The biggest one is building a web application using WordPress.

I’m happily employed over at X-Team working full-time on Stream, so I’m really just looking to create another passive income stream for my family. This is not urgent in any way, and if I’m being totally honest with myself, I’m probably just looking to scratch the proverbial entrepreneurial itch I have after selling a business I was running on the side last month.

If I’m going to start a new project, and there is not a strict time table, why not try something new? It will give me a chance to learn some new technologies I’ve not used before, like Backbone.js, and build something that I think is cool.

Read more →

Parting ways with ChurchThemes.net and looking ahead toward a brighter future

New ChurchThemes.net

Three years ago, in July 2011, I started a theme shop. It was an era where many people in smaller niches were yet to be discovered by developers as a force to be reckoned with. The “The Long Tail” principal hadn’t yet sunk in, at least not enough for churches to have viable WordPress theme options available to them.

Churches were being grossly under-served in every WordPress theme marketplace. The most common option for them was to customize their favorite “photography” or “design agency” theme, somehow seeing past page after page of irrelevant stock imagery and the thousands of “shortcodes” they wouldn’t be using. Sprinkle in a few plugins, and say a prayer – maybe, just maybe, this would work.

Read more →

WordCamp KC: Version Control Using Git

Version control is a must for any professional web developer, frontend or backend. I had the privelege of speaking this year at WordCamp KC on the topic of Version Control Using Git.

There are many ways to setup Git, but in my talk, the aim was to cover the simplest approach possible so folks could get set up quickly.

This tutorial-style post is meant to provide more detail on how to start using Git on your local environment.

The slides used for this presentation can be seen at: http://www.slideshare.net/fjarrett/wordcamp-kc-2014-version-control-using-git

Read more →