IS_PAGE(ID)不适用于博客页面

时间:2019-05-07 作者:MJ2410

我正在尝试使用is_page(postid) 对于WordPress网站functions.php

 if (is_page(1) || is_page(2) || is_page(3) ) {
           echo "<script>console.log(\'insideIf\');</script>";
           wp_enqueue_style( \'custom_css\', get_template_directory_child() . path);  
        }
因此,考虑到1、2和3是页面的ID,ID为2和3的页面在控制台中记录消息并加载css文件,而is_page(1) 没有响应。

我试着把它改成is_page(\'1\')is_single()is_single(1). 没有被检测到的页面是一个博客页面,我甚至尝试了标题is_page(\'blog\').

顺便说一句,我反复核对了身份证,所以我肯定没有使用错误的身份证。

2 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

如果您尝试检查的页面设置为帖子页面,则is_page “条件”不会为真。

在这种情况下,您应该检查is_home.

为什么?所有这些条件标记都基于全局wp_query. 对于设置为帖子页面(博客主页)的页面,全局查询不包含单数页面-它包含博客帖子列表。

SO网友:cjbj

有条件的is_page 映射到is_page 的方法wp_query 班正如您在源代码中所看到的,已经测试了一些东西。

首先,如果方法不应用于传递的对象(例如,因为它不是wp_query 实例),它返回false。

然后queried object 已检索。这将获取页面/帖子的数据,如果查询是针对存档的,则获取该特定存档的数据。请注意,此方法不处理您调用的页面IDis_page 具有它检索被查询的对象,而不考虑这一点。

接下来,它根据您传递的页面ID(或页面名称或帖子标题)测试查询的对象。这就是你的问题所在。查询的对象是博客存档,因此在此条件测试的上下文中没有页面ID。因此is_page 返回false。

最有可能is_home 这样就可以了,因为这是对主博客存档的测试。否则,您可能需要一组更复杂的测试来定位此页面。

相关推荐

插件无法工作,在Nginx上升级到php 7x后出现固定链接错误

这个插件代码在使用php5的apache服务器上运行良好,但现在我正在使用php7和;wordpress 5。x、 它有permalink错误(显示404错误)。它使用wordpress普通永久链接(只显示404错误,即新页面正在打开),但不使用自定义永久链接。插件概述:该插件检查wp帖子/页面中的链接,单击这些链接,它将在新页面中打开该链接。基本上,它对链接执行两个步骤,而不是在帖子中直接打开链接。 <?php if (!class_exists(\'wordpress_l