WordPress条件不起作用

时间:2015-12-08 15:31:35

标签: wordpress

如果正在显示的页面是"艺术家页面"我需要隐藏页脚文件的特定部分。我被告知隐藏的内容在页脚中混杂在一起所以我将该部分分开,并将其放在自己的文件中。我们调用那个文件,文件X.php ,我通过include将其放回页脚。

此链接告诉我,我的网页ID为" 4":

wp-admin/post.php?post=4&action=edit

我需要文件X.php才能显示,当向用户显示的页面不是艺术家页面时。基本上,我需要在除艺术家页面之外的每个页面上显示文件X.php。

我使用了一个简单的条件:

if ( ! is_page( 'artists' ) ) { include('file X.php'); } 
//i used this to target the page by page name

/ ======

if ( ! is_page( '4' ) ) { include('file X.php'); }
//i used this to target the page by page id

页面永远不会隐藏。它总是显示出来。

我引用了这个链接/页面:https://codex.wordpress.org/Conditional_Tags

和其他类似的网页,包括SO上的帖子,但是,不确定我做错了什么。

我没有任何错误或任何损坏。当我将代码保留在原位时(按页面标题或id),页脚在其他页面上显示为假设,但不幸的是,当我不需要它时,也会在艺术家页面上显示。

非常感谢任何帮助。谢谢你提前。

EDIT ***

我用过:var_dump( get_queried_object() );

这就是它返回的内容:

object(stdClass)#376 (17) { 
    ["term_id"]=> &int(3) 
    ["name"]=> &string(15) "featuredArtists" 
    ["slug"]=> &string(15) "featuredartists" 
    ["term_group"]=> int(0) 
    ["term_order"]=> string(2) "11" 
    ["term_taxonomy_id"]=> int(3) 
    ["taxonomy"]=> string(8) "category" 
    ["description"]=> &string(0) "" 
    ["parent"]=> &int(0) 
    ["count"]=> &int(3) 
    ["filter"]=> string(3) "raw" 
    ["cat_ID"]=> &int(3) 
    ["category_count"]=> &int(3) 
    ["category_description"]=> &string(0) "" 
    ["cat_name"]=> &string(15) "featuredArtists" 
    ["category_nicename"]=> &string(15) "featuredartists" 
    ["category_parent"]=> &int(0) 
}

1 个答案:

答案 0 :(得分:1)

删除query_postsget_queried_object()应返回页面对象,无论其上显示的是什么。

正如您在var_dump()中看到的那样,会返回一个类别对象,因为应该返回页面对象,这意味着is_page()始终< / strong>虽然它是一个真实的页面,但返回false。 is_category()将在此页面上返回true,但页面已设置为类别页面。

所有这一切意味着主要查询对象在页面上发生了变化,唯一可以做到这一点的函数是query_posts或者您使用$wp_query作为局部变量为其分配自定义查询)。这就是为什么永远不会使用query_posts因为它打破主查询对象的主要原因,它将主查询对象设置为当前自定义查询,这会破坏所有条件和查询对象。只是为了感兴趣,之前和之后 query_posts( 'cat=3' );,添加var_dump( is_page() );var_dump( is_category() );并检查结果。

作为解决方案,切换到WP_Query以运行自定义查询(或使用get_posts进行非分页查询