所以看起来get_ancestors()
是你需要的功能,能够找出什么是“级别”的东西。从get\\u祖先返回的结果数与您的“级别”数相对应,0个结果表示父页面。
因此,您的问题是这个数字不能作为查询参数使用。因此,可能最简单的选择是在保存所有页面时将其存储为一个元字段。您可以通过一个简单的挂钩来实现这一点,如:
add_action(\'save_post\', \'hafiz_update_level_number\', 10, 2);
function hafiz_update_level_number($postID, $post) {
if ($post->type == \'page\') {
update_post_meta($postID, \'hafiz_level_number\', get_ancestors($postID)) ;
}
}
现在不需要
if ($level == ?)
代码,您只需确保您有一个数字,其中0是“父”,1是级别1,2是级别2,等等。您可以使您的查询工作如下:
$query->query_vars[\'meta_key\'] = \'hafiz_level_number\';
$query->query_vars[\'meta_value\'] = $levelNumber;
对于如何使用这个$查询对象,您可能需要对其进行编辑,但希望您能在这里了解大致情况。
请注意,您有一个明显的问题,即除非已保存或更新帖子,否则不会设置此新值after 您安装了这个钩子,因此您需要手动打开并保存每个页面,或者编写一个快速脚本来运行一次,该脚本在每个页面中循环并为每个页面设置此值。
希望这有帮助。此代码未经测试,但其目的是概述一种编写回答问题所需的完整代码的方法。请回答任何问题