How to set your Genesis category pages to display just the post titles.
Place the following code snippet into your functions.php file. Located: Dashboard > Appearance > Editor > functions.php
add_action('genesis_before','remove_some_actions'); function remove_some_actions() { if ( is_category()) { remove_action( 'genesis_before_post_title', 'genesis_post_info' ); remove_action( 'genesis_after_post_content', 'genesis_post_meta' ); remove_action( 'genesis_post_content', 'genesis_do_post_content' ); } }
Looking at the code you can see that it is specifically calling your category page and then removing the post info, post meta, and the finally the content – leaving you with just your titles. Woohoo!
If this didn’t work for you, then there is probably an action in your specific theme that is interfering. A good example of this is the Pixel Happy theme in which the post info and post meta functions have been renamed. Inside of its functions.php file you will see this:
// Restablish the post info line remove_action('genesis_before_post_content', 'genesis_post_info'); add_action('genesis_before_post_content', 'pixelhappy_post_info'); function pixelhappy_post_info() { if(is_page()) return; // don't do post-info on pages genesis_post_info(); } // Restablish the post meta line remove_action('genesis_after_post_content', 'genesis_post_meta'); add_action('genesis_after_post_content', 'pixelhappy_post_meta'); function pixelhappy_post_meta() { if(is_page()) return; // don't do post-meta on pages genesis_post_meta(); }
So for our nifty code snippet to work, we would need to rename them as well:
add_action('genesis_before','remove_some_actions'); function remove_some_actions() { if ( is_category()) { remove_action( 'genesis_before_post_content', 'pixelhappy_post_info' ); remove_action( 'genesis_after_post_content', 'pixelhappy_post_meta' ); remove_action( 'genesis_post_content', 'genesis_do_post_content' ); } }
Now let’s say you want to display only the titles on a specific category or multiple categories. Using the same snippet you can make it happen!
As an example, i’m looking to show just the post titles on my “Genesis Tutorials” category. I can call it a few different ways, by the term_ID “1”, the slug “genesis-tutorials”, or the name “Genesis Tutorials”. If I were using the name I would do the following:
add_action('genesis_before','remove_some_actions'); function remove_some_actions() { if ( is_category( 'Genesis Tutorials' )) { remove_action( 'genesis_before_post_title', 'genesis_post_info' ); remove_action( 'genesis_after_post_content', 'genesis_post_meta' ); remove_action( 'genesis_post_content', 'genesis_do_post_content' ); } }
If I wanted to use the id or slug, I would just change ‘Genesis Tutorials’. In my example, I would change it to either ‘1’ or ‘genesis-tutorials’.
Now let’s say I want to show just the post titles on both “Genesis Tutorials” and another category “Code Snippets” and I will call them using their name. I can achieve this by using an array, like so:
add_action('genesis_before','remove_some_actions'); function remove_some_actions() { if ( is_category( array( 'Genesis Tutorials', 'Code Snippets' )) { remove_action( 'genesis_before_post_title', 'genesis_post_info' ); remove_action( 'genesis_after_post_content', 'genesis_post_meta' ); remove_action( 'genesis_post_content', 'genesis_do_post_content' ); } }
You could also easily tweak this function to remove, say – only the post content, leaving you with a category page with just the post titles, post info, and post meta.
Hope that helps out! There’s a lot you can do with WordPress and Genesis by using conditional tags.
Hi! Thanks for your article, very helpful!
I was wondering if it’s better use that conditional if on the functions.php, or if it’s better create a category.php template file with the remove actions and the genesis() call. Is there any difference?
Just personal preference as there’s not going to be a noticeable performance gain from PHP organization. A time to separate them would be if your functions.php started bursting at the seams making it hard to manage. You could also create a folder with your various functions files and then include them within functions.php. Another thing to note (that is often overlooked) – creating a Functionality Plugin for all that code that shouldn’t be in there in the first place (: Personally, with Genesis I can usually keep my functions.php file pretty small – way I see it, if i’m only going to be making a few changes to (say the category page) it just doesn’t make sense to me to duplicate that file just to make my one or two changes.
So, it’s just a question of organization, no PHP performance. I guess it depends on how large the final functions.php is. Great to know. I’ll check the Bill Erickson Functionality Plugin too.
Thanks so much!