Specific Page Sidebar with Genesis

Create a sidebar for a specific page with the Genesis Framework, without a new template file.

<?php
/**
* Override the default sidebar in a Genesis Child Theme with the following code
*
* @author Joshua David Nelson, [email protected]
*/
add_action( 'genesis_setup', 'child_theme_setup' );
function child_theme_setup() {
// Register New Sidebar
genesis_register_sidebar( array(
'id' => 'about-sidebar',
'name' => __( 'About Sidebar', 'child-domain' ),
'description' => __( 'The sidebar seen on the about page, as opposed to other pages', 'child-domain' ),
) );
// Page-Specific Sidebar
add_action( 'get_header', 'jdn_change_genesis_sidebar' );
}
// Set Page Specific Sidebar
function jdn_change_genesis_sidebar() {
if ( is_page('about') ) {
remove_action( 'genesis_sidebar', 'genesis_do_sidebar' );
add_action( 'genesis_sidebar', 'jdn_do_specifc_sidebar' );
}
}
// Do Page Specific Sidebar
function jdn_do_specifc_sidebar() {
if ( is_page('about') && is_active_sidebar( 'about-sidebar' ) ) {
dynamic_sidebar( 'about-sidebar' );
}
}

Source: https://gist.github.com/joshuadavidnelson/cfc31e136bb07ab5ef80

Tags: , ,