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.