在主题激活时禁用默认小工具

时间:2013-06-12 作者:MANnDAaR

我想停用主题激活上的所有默认小部件,这些小部件在新WordPress安装时默认处于活动状态。

我使用以下函数作为主题激活的回调函数:

if ( is_admin() && isset($_GET[\'activated\'] ) && $pagenow == \'themes.php\' ) {
    // 
}
默认情况下,激活的小部件包括:

搜索

最近的帖子

最近的评论

存档

分类

元数据

我不想永久注销它们,但想从侧边栏中隐藏。

这可能吗??

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

默认小部件通常不会随主题一起激活。主题在侧栏模板文件中添加默认小部件。例如,看一下210侧边栏。php文件:

<?php
/**
 * The Sidebar containing the primary and secondary widget areas.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */
?>
<div id="primary" class="widget-area" role="complementary">
    <ul class="xoxo">

<?php
    /* When we call the dynamic_sidebar() function, it\'ll spit out
     * the widgets for that widget area. If it instead returns false,
     * then the sidebar simply doesn\'t exist, so we\'ll hard-code in
     * some default sidebar stuff just in case.
     */
    if ( ! dynamic_sidebar( \'primary-widget-area\' ) ) : ?>

            <li id="search" class="widget-container widget_search">
                <?php get_search_form(); ?>
            </li>
            <li id="archives" class="widget-container">
                <h3 class="widget-title"><?php _e( \'Archives\', \'twentyten\' ); ?></h3>
                <ul>
                    <?php wp_get_archives( \'type=monthly\' ); ?>
                </ul>
            </li>
            <li id="meta" class="widget-container">
                <h3 class="widget-title"><?php _e( \'Meta\', \'twentyten\' ); ?></h3>
                <ul>
                    <?php wp_register(); ?>
                    <li><?php wp_loginout(); ?></li>
                    <?php wp_meta(); ?>
                </ul>
            </li>
        <?php endif; // end primary widget area ?>
    </ul>
</div><!-- #primary .widget-area -->
正如您所看到的,默认小部件(在本例中是:搜索、归档和元)是在dynamic_sidebar 有条件检查此侧栏是否有用户设置的任何小部件。

因此,要回答您的问题,请确保侧栏文件中没有默认的小部件dynamic_sidebar() 条件检查。

Update:

我强烈反对删除以前使用过的主题的已配置和保存的小部件,并认为不应该这样做,但如果必须这样做,则可以捕获主题激活并触发一个简单的函数来清除保存的小部件,例如:

if ( is_admin() && isset($_GET[\'activated\'] ) && $pagenow == \'themes.php\' ) {
    add_action(\'admin_footer\',\'removed_widgets\');
}


function removed_widgets(){
    //get all registered sidebars
    global $wp_registered_sidebars;
    //get saved widgets
    $widgets = get_option(\'sidebars_widgets\');
    //loop over the sidebars and remove all widgets
    foreach ($wp_registered_sidebars as $sidebar => $value) {
        unset($widgets[$sidebar]);
    }
    //update with widgets removed
    update_option(\'sidebars_widgets\',$widgets);
}

结束

相关推荐

Using tabs in admin widgets

更新:我应该指出,我在插件/主题选项页面上测试了下面的方法,效果非常好。事实上,我还能够包括jQuery cookie插件,以保留页面加载之间的当前选项卡选择(很好!)。当您有多个小部件选项时,尝试向管理小部件添加选项卡以减少表单占用空间。我正在使用WordPress附带的jQuery UI选项卡。以下是我迄今为止在插件中编写的代码。http://pastebin.com/fe4wdBcp当小部件被拖动到小部件区域时,选项卡似乎呈现为OK,但您无法单击查看第二个选项卡。更糟糕的是,如果刷新窗口小部件页面,