如何在Get_the_Term_List中向非管理员用户隐藏术语?

时间:2012-08-03 作者:Jonathan Wold

我有一个术语,我希望登录的管理员用户在浏览网站时看到,同时对公众隐藏。

我更愿意在尽可能低的级别上完成它,即使是为了防止该术语与任何函数(例如wp\\u list\\u categories)一起公开出现。

实现这一目标的最佳方式是什么?

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

目前我们无法通过user_IDuser_rolewp_list_category() 函数,所以除非您使用过滤器来实现这一点,否则这是不可能的,这有点复杂,所以这里我有一个解决方案,它可以精确地实现您想要的,而不使用过滤器。

<?php
if ( current_user_can( \'manage_options\' ) ) {
    /* A user with admin privileges */
    wp_list_categories(); ?
} else {
    /* A user without admin privileges */
    wp_list_categories(\'exclude=4\');  // 4 is id of category you\'d like to hide
}
?>
更新-我认为使用get_category() 函数将是一个好主意,首先获取所有类别作为数组,然后根据需要显示它们。

<?php 
        $categories = get_categories();
        if(!current_user_can( \'manage_options\' )) {
            $exclude = 4; // category ID to hide from non admin
        } else {
            $exclude = \'\';
        }

        foreach ( $categories as $cat ) {
            if($cat->term_id != $exclude) {
                echo \'<li>\'.$cat->name.\'</li>\';
            }
        }
?>

结束

相关推荐

如何让is_admin()在我需要的时候返回FALSE?

我正在使用一个插件向我的访问者显示一个条款和条件页面。访问者必须同意条款和条件,才能看到网站的实际内容。当此插件处于活动状态并且显示“条款和条件”页面时,它不会使用正常的主题呈现流。相反,该插件调用get\\u header()、get\\u footer()等直接呈现页面。执行此操作时,is\\u admin()将返回true,尽管我们确实应该将“条款和条件”页面视为前端,而不是仪表板/管理面板。该主题使用is\\u admin()来决定是否将某些javascript排入队列,因此它将错误的javasc