How to get sidebar widgets in leftsidebar template

I have created a custom sidebar widgets using below code :

register_sidebar(array(
        'id' = 'sidebar-widget-1',
        'name' = 'Sidebar Widget 1',
        'before_widget' = '',
        'after_widget' = '',
        'before_title' = '',
        'after_title' = '',

    ));

and it is showing in Appearance - Widgets and it is also showing content on frontend using dynamic_sidebar('Sidebar Widget 1').

But I want to get content of this register_sidebar by using its id into a variable.

How to get sidebar content by using its id?

Topic register-sidebar sidebar widgets Wordpress

Category Web


From your question you have already registered the sidebar.

To get the content of the sidebar into a variable, i think you can use php buffering :

   // ob_start - Turn on output buffering
   // ob_get_contents - Return the contents of the output buffer
   // ob_end_clean - Clean (erase) the output buffer and turn off output buffering

Such as this :

   // Turn on output buffering
   ob_start();
   // Specify the sidebar using its [id]
   dynamic_sidebar('sidebar-widget-1');
   // Store the return contents of the output buffer in a variable
   // in this case $sidebar_content
   $sidebar_content = ob_get_contents();
   // Clean (erase) the output buffer and turn off output buffering
   ob_end_clean();

if you need to get more than one sidebar content, like you need the get the content of several sidebars at once then you can:

    // Get the list of all registered sidebars using wp_registered_sidebars
    foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) :
        // Turn on output buffering
        ob_start();
        // This will get all the sidebars
        dynamic_sidebar($sidebar['id']);
        // Store the return contents of the output buffer in a variable
        // in this case $sidebars_content
        $sidebars_content = ob_get_contents();
        // Clean (erase) the output buffer and turn off output buffering
        ob_end_clean();
    endif;

OR

    // Get the global registered sidebars
    global $wp_registered_sidebars;
    // Loop through each content in $wp_registered_sidebars array
    foreach($wp_registered_sidebars as $sidebar_id => $sidebar) :
        ob_start();
        // This will get all the sidebars
        dynamic_sidebar($sidebar['id']);
        // Store the return contents of the output buffer in a variable
        // in this case $sidebars_content
        $sidebars_content = ob_get_contents();
        // Clean (erase) the output buffer and turn off output buffering
        ob_end_clean();
    endforeach;

Hope one on this helps you.


In your sidebar.php or any other custom sidebar file call by ID like this

<?php get_sidebar('sidebar-widget-1'); ?>

Not like this

<?php get_sidebar('Sidebar Widget 1'); ?>

See the difference, I used ID in get_sidebar() function instead of name.

Now where ever you want sidebar appear in front-end, there call it like this

<?php get_sidebar('sidebar-widget-1'); ?>

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.