On a recent project using a Genesis child theme I found myself in a situation where I wanted to use a filter, but only on certain views, namely the category view and the homepage view. Adding a filter is pretty straight forward, but using that filter in combination with conditional tags you need to add a bit extra instead of just the tags themselves.
Now, the example is for the Genesis Framework, but really the logic behind will work on any child theme using filters. What I wanted to filter was the output of the post meta area, which normally displays both the categories and the tags. I wanted to use a slightly different post meta on the homepage where the tags would be replaced with a Continue reading link.
This is what the filter looks like:
[php]//Customizing Post Meta
function forsite_post_meta_filter($post_meta) {
$post_meta = ‘Filed Under: Code, Continue Reading‘;
return $post_meta;
}[/php]
As you can see I am just adding a permalink with a ‘Continue Reading’ text. Nothing too fancy. Normally you would add your filter and you’d be all done. Like so:
[php]//Customizing Post Meta
function forsite_post_meta_filter($post_meta) {
$post_meta = ‘Filed Under: Code, Continue Reading‘;
return $post_meta;
}
add_filter(‘genesis_post_meta’, ‘forsite_post_meta_filter’);[/php]
Using Conditial Tags with this filter actually requires the use of an add_action
statement. The way to do is by declaring another function which handles the conditional tags. Something like this
[php]function forsite_post_meta_conditionals() {
if( is_home() || is_category() ) {
add_filter(‘genesis_post_meta’, ‘forsite_post_meta_filter’);
}
}
add_action(‘wp’, ‘forsite_post_meta_conditionals’);[/php]
The if statement determines to actually use this filter only whether you are looking at the home page or the category view. Combined the full code looks like this:
[php]//Customizing Post Meta
function forsite_post_meta_filter($post_meta) {
$post_meta = ‘Filed Under: Code, Continue Reading‘;
return $post_meta;
}
function forsite_post_meta_conditionals() {
if( is_home() || is_category() ) {
add_filter(‘genesis_post_meta’, ‘forsite_post_meta_filter’);
}
}
add_action(‘wp’, ‘forsite_post_meta_conditionals’);[/php]
More info on conditional tags can be found in the Codex, and more information on WordPress filters. Have you worked with conditional tags and / or filters before?