wordpress count widgets

2019-03-13 07:56发布

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.

2条回答
地球回转人心会变
2楼-- · 2019-03-13 08:24
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..

查看更多
叛逆
3楼-- · 2019-03-13 08:33

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.

查看更多
登录 后发表回答