检查将小部件添加到哪个注册的侧边栏

时间:2014-08-15 作者:Benjamin

我有2个注册的侧边栏在我的主题一Products 一个用于Blog.

我想做的是,如果我的“Category”小部件被添加到产品侧栏,分类法将自动设置为“Product\\u cats”,如果添加到博客侧栏,则将分类法设置为“Category”。这将允许我的后端小部件更新它在下拉菜单中显示的类别。

我一直在搜索wp-includes/widgets.php 方法或属性的文件,该方法或属性包含小部件父侧栏的id或名称,但似乎找不到执行此操作的方法。

如果我可以获得父侧边栏的名称或id,我会在我的小部件的form方法中执行类似的操作:

public function form( $instance ) {

    $parent = getParentSidebarID($this); // How do you do this!

    switch ($parent) {
        case \'product-sidebar\':
            $tax = \'product_cat\';
            break;
        case \'blog-sidebar\':
            $tax = \'category\';
            break;
        default:
            $tax = \'\';
            break;
    }
}
这可能吗?

1 个回复
最合适的回答,由SO网友:bonger 整理而成

form()方法中没有一种标准的方法来完成它;下面是一个函数:

function wp158055_get_sidebar_id( $widget ) {
    foreach ( wp_get_sidebars_widgets() as $sidebar_id => $widget_ids ) {
        if ( array_search( $widget->id, $widget_ids ) !== false ) return $sidebar_id;
    }
    return false;
}
并致电$this. 注意您可以使用的widget()方法$args[\'id\'] 如上所述in this answer.

结束

相关推荐

Taxonomy term count

我有一个名为“资源”的自定义帖子类型,用于在我的网站上创建资源目录。该CPT具有称为“价格”的分类法。有三个术语因此,当有人在查看我的目录时,他们会在侧栏中看到“价格”以及下面的选项,他们可以单击(例如)免费并查看列出的18种不同的免费资源。我想要的是学期页面我的网站。com/价格/免费要有标题18免费资源我怎样才能做到这一点?