Using WordPress ‘get_sidebar’ PHP action

The get_sidebar WordPress PHP action fires before the sidebar template file is loaded.

Usage

add_action('get_sidebar', 'your_custom_function', 10, 2);

function your_custom_function($name, $args) {
    // your custom code here
}

Parameters

  • $name (string|null) – Name of the specific sidebar file to use. Null for the default sidebar.
  • $args (array) – Additional arguments passed to the sidebar template.

More information

See WordPress Developer Resources: get_sidebar

Examples

Change Sidebar Name Based on Post Type

Change the sidebar name based on the current post type:

add_action('get_sidebar', 'change_sidebar_name_based_on_post_type', 10, 1);

function change_sidebar_name_based_on_post_type($name) {
    if (is_singular('post')) {
        $name = 'single-post';
    } elseif (is_singular('page')) {
        $name = 'single-page';
    }
    return $name;
}

Load Custom Sidebar for a Specific Page

Load a custom sidebar for a specific page by its ID:

add_action('get_sidebar', 'load_custom_sidebar_for_specific_page', 10, 1);

function load_custom_sidebar_for_specific_page($name) {
    if (is_page(42)) {
        $name = 'custom-sidebar';
    }
    return $name;
}

Add Custom Content Before Sidebar

Add custom content before the sidebar is loaded:

add_action('get_sidebar', 'add_custom_content_before_sidebar', 10, 1);

function add_custom_content_before_sidebar($name) {
    if ($name === 'default') {
        echo '<div class="custom-content">Custom Content</div>';
    }
}

Add Custom Styles to Sidebar

Add custom styles to the sidebar:

add_action('get_sidebar', 'add_custom_styles_to_sidebar', 10, 1);

function add_custom_styles_to_sidebar($name) {
    if ($name === 'default') {
        echo '<style>.sidebar { background-color: #f5f5f5; }</style>';
    }
}

Display Different Sidebar for Logged-in Users

Display a different sidebar for logged-in users:

add_action('get_sidebar', 'display_different_sidebar_for_logged_in_users', 10, 1);

function display_different_sidebar_for_logged_in_users($name) {
    if (is_user_logged_in()) {
        $name = 'logged-in-sidebar';
    }
    return $name;
}