wordpress count widgets

Hi I am trying to figure out as to how can we get the count of widgets published in a given sidebar position.

For example I have a sidebar called UTILITY which is a horizontal sidebar. I want the width of these widget positions to adjust equally according to the number of widgets published in it.

I want to know that on a given page how many widgets are published in this sidebar so that I can assign a width class according to it.

Answers


wp_get_sidebars_widgets()

Will give you an array of the sidebars and the widgets they have, just count the array for the appropriate sidebar..

For example:

$the_sidebars = wp_get_sidebars_widgets();
echo count( $the_sidebars['my-sidebar-id'] );

The ID is the one you declare when you register the sidebar(so check your sidebar registration code).

You could also wrap this into a function.

function count_sidebar_widgets( $sidebar_id, $echo = true ) {
    $the_sidebars = wp_get_sidebars_widgets();
    if( !isset( $the_sidebars[$sidebar_id] ) )
        return __( 'Invalid sidebar ID' );
    if( $echo )
        echo count( $the_sidebars[$sidebar_id] );
    else
        return count( $the_sidebars[$sidebar_id] );
}

Then call it when you need to get the count, using the sidebar ID..

count_sidebar_widgets( 'some-sidebar-id' );

Or store in variable for other usage..

$my_var = count_sidebar_widgets( 'some-sidebar-id', false );

Hope that helps..


When you are building the sidebar, there should be a list containing the sidebar contents; you are iterating over it to add those items to the generated page. Just use the count() function on this list to find the number of items you're displaying.


Need Your Help

Groovy : Closures or Methods

groovy closures

I've got into the habit of using Closures everywhere I can in place of regular methods, even when I don't need access to free variables. So, I will use this:

How can I check if arrays are equal in javascript?

javascript arrays comparison

Have a look at this code sample or go to the jsfiddle