我正在使用Widget Logic plugin 使用Wordpress条件标记(或任何通用PHP代码)在特定页面上显示小部件。
我想做的是只在子页面上显示一个小部件,而不是在顶级页面上。我尝试了以下两种方法,但它们在所有页面上都返回true(因此小部件在所有页面上都显示):
global $post; return ($post->post_parent != 0);
以及
global $post; return ( is_page() && $post->post_parent );
注:我尝试了这一测试,小部件显示在ID 61页及其子项上,而不仅仅是我所期望的子项上:
global $post; return ($post->post_parent=="61");
有什么建议吗?
谢谢
最合适的回答,由SO网友:Caroline Elisa 整理而成
抱歉,原来我的主题使用有问题get_posts
在循环外列出子页,而不wp_reset_postdata
. 所以aglobal $post;
我想是冲突吧。
global $post; return ($post->post_parent != 0);
工作正常。
SO网友:jot
您可以在plugin\'s page 在wordpress。组织。选择“其他注释”选项卡。您可以在示例列表中找到它:
global $post;
// WP page that is a child of page 77
return in_array(77, get_post_ancestors($post));
Edit: 作为您建议的替代方案,您可以尝试
global $post;
return !empty(get_post_ancestors($post));
这是一个昂贵的调用,最好只用于测试。但我怀疑您的页面层次结构可能有问题。您的顶级页面是否可能不在根级别?