Dynamics Sidebars

Have a custom sidebar (widget area) for every pages, posts and/or custom post types.

Author:Alysson Bortoli (profile at wordpress.org)
WordPress version required:3.0
WordPress version tested:4.0
Plugin version:1.0.7
Added to WordPress repository:28-09-2011
Last updated:07-10-2014
Warning! This plugin has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Rating, %:100
Rated by:1
Plugin URI:
Total downloads:13 198
Active installs:600+
plugin download
Click to start download

With DS, it's possible to change the widgets that display in a sidebar (widgetized area) according to a context (for example, a specific page). Setting up a custom widget area to display across multiple conditions is as easy as a few clicks and code changes.

Documentation | Support Forum

Usage

By default it will add 'custom-sidebar' support for the following post types:

  • Post
  • Page

IMPORTANT: Showing the sidebar

Note you can use this wherever you like to show you sidebar

<?php
    dynamic_sidebar( get_the_sidebar() );
?>

Or

<?php
    $sidebar = get_the_sidebar();
    if ( is_active_sidebar( $sidebar ) ) {
        dynamic_sidebar( $sidebar );
    }
?>

Adding support for custom post type

In order to user this plugin features with your custom post type you must add a feature suppport to it. Do it by doing this:

On you 'functions.php' file

<?php
    add_action( 'after_setup_theme', 'theme_setup' );

    function theme_setup()
    {
        add_post_type_support( 'post_type', 'custom-sidebar' );
        // add another one here
    }
?>

When you register your custom post type, on 'register_post_type' call.

Function Reference register_post_type for more information

<?php
    $args = array( 'supports' => array( 'custom-sidebar' ) );
    register_post_type( 'post_type', $args );
?>

Removing support for pages, posts and/or custom post types

To remove support from pages, posts and/or custom post type do like so: On you 'functions.php' file add this

<?php
    add_action( 'after_setup_theme', 'theme_setup' );

    function theme_setup()
    {
        remove_post_type_support( 'post', 'custom-sidebar' ); // to remove from posts
        remove_post_type_support( 'page', 'custom-sidebar' ); // to remove from pages
        remove_post_type_support( 'custom post type', 'custom-sidebar' ); // to remove from ctp
    }
?>

Changing sidebar args

On your 'functions.php' file just add the following code.

<?php
    add_filter( 'ds_sidebar_args', 'my_sidebar_args', 1, 3 );

    function my_sidebar_args( $defaults, $sidebar_name, $sidebar_id ) {
        $args = array(
            'description'   => "$sidebar_name widget area",
            'before_widget' => '<li id="%1$s" class="widget-container %2$s">',
            'after_widget'  => '</li>',
            'before_title'  => '<h3 class="widget-title">',
            'after_title'   => '</h3>',
        );

        return $args;
    }
?>

Documentation | Support Forum

Don't forget to check the 'Other Notes' tab for a list of all function and hook you can use.