是否可以仅当导航菜单项是页面标题(在特定模板上)而不是在仪表板上时隐藏它们?

时间:2021-11-08 作者:SuPalle

我想隐藏使用自定义页面模板的页面标题。因此,我编写了在启用自定义页面模板时过滤掉页面标题的代码。然而,这导致导航菜单项也被过滤。因此,我添加了更多代码来删除过滤器(如果它是一个菜单项),然后再添加回来。但现在,标题正在仪表板中过滤,如图所示。如何防止这种情况?

我添加的代码如下:

function suppressed_title($title,$id) {
if(get_page_template_slug()==\'custom-template.php\' && get_post_type($id)==\'page\') {
  $title=\'\';
}
return $title; }
add_filter(\'the_title\', \'suppressed_title\',10,2);

function remove_title_filter($nav_menu, $args) { 
  remove_filter(\'the_title\', \'suppressed_title\',10,2);
  return $nav_menu;
}
add_filter(\'pre_wp_nav_menu\', \'remove_title_filter\',10,2);

function add_title_filter($items, $args) {
  //add the filter after filtering out the menu items
  add_filter(\'the_title\', \'suppressed_title\',10,2);
  return $items;
}
add_filter(\'wp_nav_menu_items\', \'add_title_filter\',10,2);

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

您可以使用is_admin() 检查请求是否在/wp admin内部完成。

function suppressed_title($title, $id) {
    if (is_admin()) {
        return $title;
    }
    if (get_page_template_slug() === \'custom-template.php\' && get_post_type($id) === \'page\') {
        $title = \'\';
    }
    return $title;
}
add_filter(\'the_title\', \'suppressed_title\', 10, 2);
我把你的代码改成了三重相等=== 结束== 因为这通常被认为是最佳实践。(参见this StackOverflow answer 更多信息。)

我想隐藏使用自定义页面模板的页面标题

从技术上讲,您现在并没有隐藏标题,而是显示一个空标题。这可能会对样式产生影响。在我看来,一个更干净的解决方案是在这些页面上根本不显示标题。但这在很大程度上取决于您使用的主题。

相关推荐

PHP警告:试图读取bool上的属性“Term_id”

自从从PHP 7.4更新到PHP 8以来,我的error_log 现在,我使用的一个儿童主题中充满了这样的行:【2021 10月17日13:30:38 UTC】PHP警告:尝试读取属性;term\\u id;在bool-in/public\\u html/wp内容/主题/主题名子项/函数。php在线181这是抛出错误的块。它用于修改分页,以便不导航特定类型(链接)的帖子。// modify pagination to exclude post_format of \'link\' on news/blog