隐藏除主页以外的所有页面上的管理栏

时间:2019-05-24 作者:Badan

我正在尝试从除主页以外的所有页面隐藏WordPress管理栏。

我在主题的functions.php 文件,但它会隐藏所有页面上的管理栏:

if ( ! is_single() ) {
   add_filter( \'show_admin_bar\', \'__return_false\' );
}
我希望它只出现在主页上,并隐藏在其他任何地方。

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

您应该在连接到的函数中使用条件标记show_admin_bar 滤器

add_filter( \'show_admin_bar\', \'show_adminbar_on_homepage_only\', 20 );
function show_adminbar_on_homepage_only()
{
     return is_user_logged_in() && is_front_page();
}

SO网友:middlelady

这可能是一个优先问题,意味着某些插件/主题功能正在覆盖管理栏行为。尝试以下操作:

if (!is_home() && !is_front_page()){
   add_filter(\'show_admin_bar\', \'__return_false\', 999);
}
如果这起作用,让我们试着了解哪些插件是正确的,并分配正确的优先级,比如更低的99或其他什么。

SO网友:shea

有一种更好的方法可以改进现有答案:

add_filter( \'show_admin_bar\', function ( $show ) {

    if ( is_front_page() ) {
        return false;
    }

    return $show;
}, 50 );
与给出的其他代码示例不同,此代码段仅在当前查看首页时更改管理栏的可见性。否则,它将使用默认设置为的任何内容。这样就不需要考虑用户未登录的不同情况。

SO网友:Vishwa

您应该检查页面是否为主页和/或首页。is_front_page() 查看网站首页(博客帖子索引或静态页面)时返回true,is_home() 查看博客文章索引时返回true。尝试如下操作,

if (!is_home() && !is_front_page()){
   add_filter(\'show_admin_bar\', \'__return_false\');
}

if (!is_home()){
   add_filter(\'show_admin_bar\', \'__return_false\');
}

相关推荐

ADD_TIME_SUPPORT(‘admin-bar’)导致致命错误

我正在努力学习更多关于主题开发的知识,所以我创建了自己的主题,除了添加functions.php 并尝试用一些简单的方法进行更新,如:<?php add_theme_support(\'admin-bar\', array(\'menus\')); ?> 我明白了Server 500 ERROR 我无法访问Wordpress的任何部分,甚至连仪表板都无法访问。但一旦我删除functions.php 和刷新页面我的Wordpress又回来了,工作顺利。有什么神秘的fu