检查特定标签在标签和存档页面上不起作用 - 解决方案?

дајана.с

我想在所有页面的页眉区域显示某个元素(例如只是单词“HELLO”),并使用 PHP 运算符从该元素的显示中排除某些页面。在我的例子中,如果帖子的标签为 ID 4444 或属于 ID 为 123 或 456 的类别,则不应显示此元素(“Hello”)。

标题中的示例代码也可以正常工作:

if ( !in_category ( array (123, 456)) && !has_tag (4444)):

echo '<div class=\'example\'>Hello</div>';

endif;

因此,示例文本“Hello”应该显示在每个帖子和每个页面上,这些页面在 ID 为 123 和/或 456 和/或不是关键字 ID 4444 的类别中没有关键字 ID 4444。

这在所有页面和每篇文章中都非常有效。

但是(这就是问题所在),如果我查看存档或标记页面(两者都由 archive.php 表示)或者如果我使用搜索 (search.php),它就无法正常工作。如果存档、标签或搜索页面列出了多个文章预览,并且 TOP (!) 文章已分配了 ID 为 4444 的标签,则存档、标签或搜索的标题中不会显示“您好”一词页面 - 但它应该是!

如果这样的文章预览(其文章例如具有标签 ID 4444)位于第二、第三或之后的位置,则在标题中显示“你好”。

我不想在存档、标签或搜索页面上搜索 ID 4444 或类别 123、456,因为它们只是列出文章预览的页面。然而,在这些页面上,“你好”应该根据需要在标题中显示。

CK麦克劳德

(评论后编辑)

我认为这很简单,您想要的只是:

//if on any archive or archive-like page OR on "singular" pages except as excluded
if ( ! is_singular() || ( is_singular() && ! in_category( array (123, 456)) && ! has_tag (4444) ) ):

echo '<div class=\'example\'>Hello</div>';

endif;

坦率地说,我根本不担心附件页面,但是,要特别涉及它们,您可以在is_attachment()ORis_page()is_single()

有关 Wordpress 条件标签的更多信息,请访问:https : //codex.wordpress.org/Conditional_Tags

第二种选择,但我不会真正推荐它,是使用 CSS 来隐藏特定页面/页面类型上的元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章