Force a Custom Post Type To a Certain Layout in Genesis Theme in WordPress

You can force a certain custom post type in a Genesis WordPress theme to have a certain page layout applied to it. You can add a function and filter to your functions.php file in your WordPress theme. This will save having to manually go through and resave the layout settings in WP dashboard at the post level, or going forward you just want to ensure a certain custom post type follows the same  page layout.

To force the custom post type to go  full width:

add_filter( 'genesis_site_layout', 'themeprefix_cpt_layout' );
// Force a layout
function themeprefix_cpt_layout() {
    if( 'your-custom-post-type-name' == get_post_type() ) {
        return 'full-width-content';
    }
}

Just swap in your custom post type name in the if statement.

If you want just blog posts to have a certain layout in Genesis just use post as the value for get_post_type()

To force the Custom Post Type to use the other Genesis layouts just swap in the one of the values below in the return value above.

icon-chevron-right content-sidebar
icon-chevron-right sidebar-content
icon-chevron-right content-sidebar-sidebar
icon-chevron-right sidebar-sidebar-content
icon-chevron-right sidebar-content-sidebar

force-layout-cpt

 

 

 

 

 

Force a Layout to an Array of Custom Post Types

You can also force a layout to an array of custom post types with is_singular() , for example…

add_filter( 'genesis_site_layout', 'themeprefix_cpt_layout' );
// Force a layout
function themeprefix_cpt_layout() {
    if ( is_singular( array( 'post', 'treatment' ) ) ) {
        return 'content-sidebar';
    }
}

Will apply the sidebar layout to all single posts of normal posts and a CPT named treatment.

5 Comments

  1. Naomi on January 29, 2017 at 5:20 am

    It has worked fine for my genesis child theme. Thank you!

  2. nick on September 6, 2016 at 12:58 am

    For me, right now today, this post is what Google and the internet are made for. Thanks.

  3. Amy Stout on May 18, 2016 at 3:37 pm

    This is great but what if you have multiple CPT’s that you want to force full width on? Do you add the second one to the ‘if-statement’ or do you just repeat the whole block of code again?

    • Neil Gowran on May 19, 2016 at 12:14 am

      You can do a couple of if statements


      function themeprefix_cpt_layout() {
      if( 'post' == get_post_type() ) {
      return 'full-width-content';
      }
      if( 'page' == get_post_type() ) {
      return 'full-width-content';
      }

      }
      add_filter( 'genesis_site_layout', 'themeprefix_cpt_layout' );

  4. Tim on May 26, 2015 at 11:42 am

    Good post, what about a custom taxonomy type, let’s say a plugin creates custom categories?

    get_taxonomy (‘name’)
    ?

Leave all Comment