A brief glimpse of my WordPress.com hosted blog’s footer. I’ve had that thing for nearly six years. Yep, six years. A little hard to believe that I only have about eighty posts but it’s true. Part of that reason being me branching off and trying on a self hosted site. I wish I could tell you all the things I’ve tried over the course of this branching but honestly don’t recall every little thing I’ve done.
I can honestly tell you I have learned a few things here and there from not only reading the WordPress codex pages but from doing some theme reviews as well.
Be friendly
Yes, be friendly. What I mean by this is that you should think about who will be using your theme or plugin. True that not many people are capable of knowing how to code a site with PHP, HTML but that may not be your target, right? Odds are that you want to share your theme with the community.
That means that another developer will be looking at your code. Shock! Awe! You name the emotion, odds are that person will experience it at one point while looking at your code. The one you don’t want to bestow upon them is anger. Once that one hits their ability to trust you will dwindle.
How do you prevent it? Well, documenting is a great way. Another is by making things a little easier by adding hooks and filters to your theme.
Hooks and filters
Yes, hooks and filters. One simple solution to help everyone out. At least a good portion of people. You can’t really please everyone, unfortunately. One way of adding friendliness to your theme, or plugin, is by adding a simple action so that a child theme can easily hook to it. A quick sample would be just before the page of the theme.
< ?php do_action( 'page_prior' ); ?>
See? Simple, right? Then all a child theme, or even a plugin, has to do is hook to it. Now, that is a quick and painless way of making your theme a little easier to work with and a future developer will like it since they won’t have to change any files or create a separate file. But there is more! What’s even crazier to think about is that you can not only create minor changes that way but you can also make huge changes that way.
Suppose for a moment that you create a post structure that you feel would want to be changed down the road or by somebody else. Simple! You guessed it! Action hook. Now it is a little more work but you can do it with a few extra lines of code.
//somewhere in the index file while ( have_posts() ) : the_post(); do_action( 'theme_content' ); endwhile; // in the functions file add_action( 'theme_content', 'theme_content_cb' ); function theme_content_cb(){ // inside the WordPress loop }
Yeah it does look a little odd. But in the child theme’s function file all you would have to do is remove the action and add it again with your own callback function. So the child theme’s function would look a little like:
remove_action( 'theme_content', 'theme_content_cb' ); add_action( 'theme_content', 'child_theme_content' ); function child_theme_content(){ // My child theme's content code }
What is nice about that is you can easily alter an entire block of code without ever having to touch any parent theme files or having to create any duplicate files and modifying to your choosing. It is very convenient when you have to remove credits sometimes. One of the issues I see in the WordPress.org Themes and Templates forums.
Filtering
Filtering the output is key in this. Why? Because it makes things just that much easier for the developer that will be using the theme. Remember to keep your audience in mind when creating a theme, or plugin. A good portion of the time it will be a developer. Adding a filter is as easy as using
apply_filters
and you’re done.
function theme_footer_cb( $theme_footer ){ $theme_footer = '; echo apply_filters( 'theme_footer_cb', $theme_footer ); }
With that any themer can filter the output of the theme’s footer by adding a filter in the child theme’s function file like so:
add_filter( 'theme_footer_cb', 'child_theme_footer' ); function child_theme_footer( $footer ){ $footer = ''; return $footer; }
Not so hard, right? Now go out and make a developer happy by creating these simple little hooks and filters.