688 posts
  • Has been part of the Envato Community for over 7 years
  • Has referred 1+ members
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
+3 more
_rg_ says

Does anybody knows how this works exactly?

I´m trying to register a sidebar dinamicly on a page or post, i have the ID but i´m not able to register/insert it on a certain widget area.

What i´m trying is to put one of the inactive widgets on a dinamic area.

Thanks!

oh, by the way, this is how i get all widgets ID´s, active ones and inactive:

$sidebars_widgets = get_option('sidebars_widgets');
foreach ($sidebars_widgets as $index=>$widgets) {
    if ($index!='wp_inactive_widgets' && $index!='array_version') {
        if(!empty($widgets) ){
            foreach($widgets as $n){
                echo 'Widget in use: '.$n.'<br />';
            }
        }
    }
    if($index=='wp_inactive_widgets'){
            foreach($widgets as $n){
                echo 'Widget inactive: '.$n.'<br />';
            }
    }
}

Put that on any template and you will see what i mean.

3007 posts
  • Has been part of the Envato Community for over 4 years
  • Has referred 200+ members
  • Has sold $250,000+ on Envato Market
  • Had an item featured in an Envato Bundle
+7 more
duotive says

Hy. I am adding the the widget name and description into a table in the database and then getting the variables and registering as many widget area as i want. And than selecting from a list with metabox in post/page i am getting the sidebar needed for a post or a page. Pretty simple concept. I hope this helps. Vlad

688 posts
  • Has been part of the Envato Community for over 7 years
  • Has referred 1+ members
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
+3 more
_rg_ says

Ok, i already can get the widgets names/ids, also if i need descripion too, but what i can´t is register the widget into a widget area.

How is your last step? adding the widget to template?

Do you register_sidebar (new one) and there you place the widget?

I can´t figure your idea… :(

3007 posts
  • Has been part of the Envato Community for over 4 years
  • Has referred 200+ members
  • Has sold $250,000+ on Envato Market
  • Had an item featured in an Envato Bundle
+7 more
duotive says

in the sidebar.php i get the meta box for each page or post ( if is_post() or if is_page() ) and get the contet for the current sidebar registered to that particular page/post i can share the code if you would like…

3007 posts
  • Has been part of the Envato Community for over 4 years
  • Has referred 200+ members
  • Has sold $250,000+ on Envato Market
  • Had an item featured in an Envato Bundle
+7 more
duotive says
Here it goes. The isertion you can do. The first function is the one called first.

    function sidebars_require () {
        global $wpdb;        
        $portfolio_require_query = 'SELECT * FROM duotive_sidebars ORDER BY ID ASC';    
        $portfolio_require = $wpdb->get_results($portfolio_require_query);
        return $portfolio_require;
    }    

This gets all the sidebars from the db.

function custom_sidebars_initialization() { 
    $sidebars = sidebars_require();
    if ( count($sidebars) > 0 ):
        foreach ( $sidebars as $sidebar):
           register_sidebar( array(
                'name' =>  $sidebar->NAME,
                'id' => str_replace(' ','-',strtolower($sidebar->NAME)),
                'description' => $sidebar->DESCRIPTION ,
                'before_title' => '<h3 class="widget-title">',
                'after_title' => '</h3>',        
                'before_widget' => '<li class="widget-container %2$s" id="%1$s">',
                'after_widget' => '</li>',
            ) );        

        endforeach;
    endif; 
} ?&gt;
&lt;?php add_action( 'widgets_init', 'custom_sidebars_initialization' );?&gt;

This one registers all the widget areas that i defined. The metaboxes are made with the help of a tutorial at WPShout.com => http://wpshout.com.

function hybrid_post_meta_boxes() {
    $sidebars = sidebars_require();
    if ( count($sidebars) > 0 )
    {    
        $sidebar_array = array("No Sidebar");
        $i = 0;
        foreach ( $sidebars as $sidebar)
        {
            array_push($sidebar_array,$sidebar->NAME);
        }
    }
    /* Array of the meta box options. */
    $meta_boxes = array(
            'video' => array( 'name' => 'video-thumbnail', 'title' => 'Has video tumbnail?', 'type' => 'select', 'options' => array( 0 => 'No',1 => 'Yes' ) ),
            'url' => array( 'name' => 'url-to-video', 'title' => 'Please insert the url to your video.', 'type' => 'text' ),
            'sidebar' => array( 'name' => 'sidebar', 'title' => 'Custom sidebar?', 'type' => 'select', 'options' => $sidebar_array )
    );

    return apply_filters( 'hybrid_post_meta_boxes', $meta_boxes );
}

and now… in the sidebar.php file:

    <?php if ( is_single() || is_page() )
    {
        $sidebar =  get_post_meta($post?>ID, "sidebar", true);
        $sidebar = str_replace(' ','-',strtolower($sidebar));
        if ($sidebar != '' )
        {
            if ( is_active_sidebar($sidebar) )
            {
                echo '<ul>';
                    dynamic_sidebar($sidebar);
                echo '</ul>';
            }
        }
    }
    ?>

Hope this helps. :)
688 posts
  • Has been part of the Envato Community for over 7 years
  • Has referred 1+ members
  • Has sold $5,000+ on Envato Market
  • Has collected 10+ items on Envato Market
+3 more
_rg_ says

waw, well i need to take a time to see that, then i´ll tell you.

anyway, while i´m wrigting i´m seeing that´with your code you active or not certain sidebars widgets areas, but what i´m trying to is to active or not certain “widgets” only.

what i said, i´m able to unregister them on any post or page with the code i posted, doing a wp_unregister_sidebar_widget. I think i need to review this from a diferent point of wiew.

In humans words, on the widget admin page, you have the inactive widgets panel where you can leave widgets and those ones will keep settings, like title or any content… well, those inactive widgets, is there no way to call them from anyplace on templates?

There must be a way to call a widget (not a dinamic sidebar area, just a single widget) directly from anywere. That´s the main idea in real.

I know the existence of the_widget(), but only works with default widgets like WP_search and son on.

thanks for your time, if i find solution i will post here and may be build a plugin. :)

Helpful Information

  • Please read our community guidelines. Self promotion and discussion of piracy is not allowed.
  • Open a support ticket if you would like specific help with your account, deposits or purchases.
  • Item Support by authors is optional and may vary. Please see the Support tab on each item page.

Most of all, enjoy your time here. Thank you for being a valued Envato community member.

Post Reply

Format your entry with some basic HTML. Read the Full Details, or here is a refresher:

<strong></strong> to make things bold
<em></em> to emphasize
<ul><li> or <ol><li> to make lists
<h3> or <h4> to make headings
<pre></pre> for code blocks
<code></code> for a few words of code
<a></a> for links
<img> to paste in an image (it'll need to be hosted somewhere else though)
<blockquote></blockquote> to quote somebody

:grin: :shocked: :cry: Complete List of Smiley Codes

by
by
by
by
by
by