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.
sidebar-content
content-sidebar-sidebar
sidebar-sidebar-content
sidebar-content-sidebar
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.