如果正在显示的页面是"艺术家页面"我需要隐藏页脚文件的特定部分。我被告知隐藏的内容在页脚中混杂在一起所以我将该部分分开,并将其放在自己的文件中。我们调用那个文件,文件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)
}
答案 0 :(得分:1)
删除query_posts
。 get_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
进行非分页查询)