小部件区域:从小部件修改$param[‘xy’]-$n

时间:2011-04-18 作者:kaiser

我有不同的小部件区域。一个是一个水平区域,其中可能包含4个相邻的小部件。我的问题是如何添加不同的eg。$param[\'widget_title\'] 至小部件编号$n (通过过滤器)?

我已经试过使用wp_registered_widgets(); 函数和te不同的全局变量,但没有结果。

2 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

The dynamic_sidebar_params filter 在显示每个小部件之前调用,因此在同一侧栏中多次调用。它过滤$args$instance 将传递给小部件的参数。

如果您只想为特定侧栏的第三个小部件执行它,那么应该检查侧栏ID(在id 的值$args 数组),然后对小部件进行计数,直到到达n。有不同的方法可以做到这一点:您可以获取当前侧栏的所有小部件,并将其ID与您现在正在筛选的ID进行比较,或者您可以在过滤器中对其进行计数,在获得新侧栏名称时重置计数。或者你可以替换dynamic_sidebar() 在模板中调用自己的函数,该函数将首先重置小部件计数,然后开始过滤。

这是第二种类型的示例:计算函数中的小部件数量,每次启动新的侧栏时重置计数:

add_filter( \'dynamic_sidebar_params\', \'wpse15024_dynamic_sidebar_params\' );
function wpse15024_dynamic_sidebar_params( $params )
{
    // These are the targets. Modify them here:
    $targeted_sidebar = \'sidebar-bottom\';
    $targeted_widget = (int) 3;

    static $widget_counter = array();
    static $current_sidebar = null;

    $args = $params[0];
    $instance = $params[1];

    if ( $current_sidebar != $args[\'id\'] ) {
        $current_sidebar = $args[\'id\'];
        $widget_counter[$current_sidebar] = 0;
    }

    if ( $current_sidebar == $targeted_sidebar && $widget_counter[$current_sidebar] == $targeted_widget ) {
        $args[\'before_widget\'] = \'<div id="\'.@$args[\'widget_id\'].\'" class="span-6 last">\';
    }

    $widget_counter[$current_sidebar]++;

    return array( $args, $instance );
}

SO网友:kaiser

这样一切都能正常工作。。。但看看Jans的方法。

这就是工作代码:

function wpse15024_modify_widget_params( $params )
{
    // These are the targets. Modify them here:
    $targeted_sidebar = \'sidebar-bottom\';
    $targeted_widget = (int) 3;

    $sidebars_widgets = wp_get_sidebars_widgets();

    if ( $params[0][\'id\'] == $targeted_sidebar && $params[0][\'widget_id\'] == $sidebars_widgets[$targeted_sidebar][$targeted_widget] )
    {
        $params[0][\'before_widget\'] = \'<div id="\'.@$params[0][\'widget_id\'].\'" class="span-6 last">\';
    }

    return $params;
}
add_filter( \'dynamic_sidebar_params\', \'wpse15024_modify_widget_params\' );

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?