在wp-admin中隐藏主题列表中的主题,而不编辑核心文件

时间:2012-06-13 作者:grosshat

我正在运行一个多站点网络,安装并激活了200多个主题。有没有办法操纵wp admin中可用主题的列表,以便certain theme does not appear in the list? 我不想编辑核心文件。

我知道WordPress从函数中获取可用主题列表get_themes(). 还有一个函数get_allowed_themes() 这可能是解决方案。但不知道如何使用它。

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

以下过滤器适用于Multisite 在以下屏幕中:

  • /wp-admin/network/themes.php
  • /wp-admin/network/site-themes.php?id=1 (个别网站允许主题)
add_filter( \'all_themes\', \'wpse_55081_remove_themes_ms\' );
function wpse_55081_remove_themes_ms($themes)
{
    unset($themes[\'Twenty Ten\'], $themes[\'Twenty Eleven\']);
    return $themes;
}
中的常规主题选择器single sitesub-site of a network /wp-admin/themes.php (外观->;主题),看起来没有挂钩。。。

  • Manipulate list of themes in wp-admin
  • Reordering themes in admin panel$wp_themes 全局变量保存包含所有主题的数组,但无法取消设置其中的项。。。

    jQuery的老把戏可以做到这一点,但分页可能会变得很有趣。。。

    add_action( \'admin_head-themes.php\', \'wpse_55081_remove_themes\' );
    
    function wpse_55081_remove_themes()
    {
        ?>
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $(\'div.available-theme:contains("comicpress")\').remove();
            $(\'div.available-theme:contains("twentyten")\').remove();
            $(\'div.available-theme:contains("starkers")\').remove();
        });     
        </script>
        <?php
    }
    
    更新看起来有了一个新的钩子:extra_theme_headers.
    但有件奇怪的事:

    是的documented 作为WP 3.4中的新过滤器,但它出现在wp-includes/deprecated.php (?!)

/*
 * The returning $arr is always empty, but we are able to unset items in the global $wp_themes
 * Works in all theme screens, Multisite or Single Site (and doesn\'t bugs pagination)
 * 
 * It is defined this way: apply_filters( \'extra_theme_headers\', array() )
 * The array value is always empty but, if we return it, the filter doesn\'t works..
 *
 */
add_filter( \'extra_theme_headers\', \'wpse_55081_remove_themes_everywhere\', 10, 1 );

function wpse_55081_remove_themes_everywhere($arr)
{
    global $wp_themes;
    unset($wp_themes[\'Convertible/Convertible\'], $wp_themes[\'grido-child\'], $wp_themes[\'ilost\'], $wp_themes[\'parallels\'], $wp_themes[\'twentyeleven\']);
    // return $arr;
}

SO网友:Ruben

add_filter( \'wp_prepare_themes_for_js\', \'hideThemes\');
function hideThemes($arr){
    foreach($arr as $key => &$value){
        //unset what you want
    }
    return $arr;
}`
或者:

add_filter( \'wp_prepare_themes_for_js\', \'hideThemes\');
function hideThemes($arr){

    unset($arr["twentyfourteen"]);
    unset($arr["twentythirteen"]);
    unset($arr["twentytwelve"]);

    return $arr;
}`

结束

相关推荐

在wp-admin中更改默认页面菜单视图

我似乎不知道如何更改管理菜单中“页面”的默认视图。初始视图是“页面”视图(/wp-admin/edit.php?post_type=page)它怎么能把这个改变成其他东西呢像“添加新页面”一样?(/wp-admin/post-new.php?post_type=page)我尝试了几种不同的选项,包括用自定义菜单重建菜单,但WordPress似乎会自动重定向“页面”视图(/wp-admin/edit.php?post_type=page).