浏览此网站的问题后,我找到了以下解决方法:
function SearchFilter($query) {
if ($query->is_search) {
global $post;
$query->set( \'post_parent\', 21 );
}
return $query;
}
add_filter(\'pre_get_posts\',\'SearchFilter\');
当我这样做时,它只搜索父对象21的子对象,而不是父对象21的子对象。
此外,query\\u vars只接受post\\u parent的单个值。
对此,我们高度赞赏任何解决方案。
谢谢
SO网友:Yoav Aner
你可能可以这样做。它可能效率较低,但应该查找给定页面的所有子代,而不仅仅是直接子代。
function find_descendants($post_id) {
$descendant_ids = array();
$pages = get_pages("child_of=$post_id");
foreach ($pages as $page) { array_push($descendant_ids, $page->ID); }
return $descendant_ids;
}
function SearchFilter($query) {
if ($query->is_search) {
$query->set ( \'post__in\', find_descendants(21) );
}
return $query;
}
add_filter(\'pre_get_posts\',\'SearchFilter\');