• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Carrie Dils

Carrie Dils

WordPress Developer, Consultant, and Instructor

  • About
    • Work with Me
    • Around the Web
    • Media Kit
  • Blog
  • Web Development Courses
  • Freelancing Courses

Use a Custom Sidebar on a Custom Post Type

Originally published on December 11, 2012 by Carrie Dils 62 Comments
Last updated on February 3, 2021

I’m working on a site where I’ve created a “Jobs” custom post type (or CPT). I wanted to display a different sidebar on my single job post pages without using a custom post template.

I found my answer after getting a push in the right direction from this post by Travis Smith. I’ll post my solution here if you’d like to use a custom sidebar for your custom post type!

1. Register Your Sidebar

Genesis-Extender-Custom

For starters, I registered a sidebar to use on my single job pages. You could put this code in functions.php (or wherever you add your custom code). I’m using the Genesis Extender Plugin (aff link), and dumped the following into my Extender Custom functions area.

Note: If you need a lot of custom sidebars for a site, you might want to use the Genesis Simple Sidebars plugin instead of individually registering each one.

// Register new sidebar
genesis_register_sidebar( array(
	'id' => 'job-single-sidebar',
	'name' => 'Single Job Sidebar',
	'description' => 'This is the sidebar for single job pages.',
) );

Side note for people using the Genesis Extender Plugin:

Genesis Extender Effect Admin

If you’re using Genesis Extender to register your sidebar, be sure you have checked the little box that says “Effect Admin.” That enables the code you enter there to literally affect the WordPress admin area. If you don’t check it, you’ll be banging your head against a wall wondering why your sidebar hasn’t shown up in the widget area. 🙂

2. Call in the Sidebar Conditionally on Your CPT

Here comes the fun part. Go back to the place where you add your custom code and insert the following:

add_action('get_header','cd_change_genesis_sidebar');
function cd_change_genesis_sidebar() {
    if ( is_singular('jobs')) { // Check if we're on a single post for my CPT called "jobs"
        remove_action( 'genesis_sidebar', 'genesis_do_sidebar' ); //remove the default genesis sidebar
        add_action( 'genesis_sidebar', 'cd_do_sidebar' ); //add an action hook to call the function for my custom sidebar
    }
}

//Function to output my custom sidebar
function cd_do_sidebar() {
	dynamic_sidebar( 'job-single-sidebar' );
}

3. The End Result

Since the “jobs” site is still a work in progress, I can’t post a live link. But here are a couple of screen shots to show a regular page with the default sidebar and my single custom post type page with a custom sidebar.

Example of default sidebar
This is a regular page with the default sidebar.
custom sidebar example
Custom post type page for CPT “Jobs” sporting a custom sidebar.

By the way, go ahead and get a little jealous that I’m pulling in post data on the custom sidebar. That’s an example of something easy to do with the WP Types and Views plugins (another aff link, sorry). I’ll save a write-up on using post info outside the loop for another day.

Try it Out

If you’re working with custom post types and want to take this code for a spin, please let me know how it worked for you or if you would recommend any tweaks. Have fun stormin’ the castle!

Filed Under: Genesis Framework

About Carrie Dils

Reader Interactions

Comments

  1. John C. says

    April 18, 2018 at 6:30 pm

    Thank you Carrie. I’ve tried that though with the same result, so there must be something else going on. I don’t want to take too much of your time, so I’ll continue investigating on my end.

    Reply
  2. Alan Thompson says

    December 24, 2018 at 3:50 am

    Thanks, this solved my issue too 🙂

    Reply
    • Carrie Dils says

      December 25, 2018 at 12:30 pm

      You’re welcome, Alan!

      Reply
« Older Comments

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Search

Heya, I’m Carrie Dils

Carrie Dils chillin at the beach

Articles

  • Business
  • Front-End Development
  • Genesis Framework
  • Mental Health
  • Web Accessibility
  • WordPress Tutorials

Things I Love ❤️

My Tech Toolbox

Favorite Business Books

Powered by
  • My Courses on LinkedIN Learning
  • The Fearless Freelancer®

© 2022 CWD Holdings LLC