Я пытаюсь ограничить поиск родительской страницей и ее дочерними страницами.
Я изменил searchform.php, добавив этот код:
<input type="hidden" value="<?php global $post; $ancestors2 = $post->ancestors; if ($ancestors2) { echo end($ancestors2); } else { echo $post->ID; } ?>" name="childof" />
Также я добавляю функцию к функциям my.php моей темы:
function SearchFilter($query) { if (is_search() && !empty($_GET['s']) && !empty($_GET['childof'])) { $parent_page_id = intval($_GET['childof']); $query->set('child_of', $parent_page_id ); } return $query; } add_filter('pre_get_posts','SearchFilter');
Я тестировал переменные с var_dump($query)
и он возвращался:
["child_of"]=> int(104)
Но я все еще вижу результаты поиска с других страниц, а не только с родительской страницы (или ее дочерних страниц).
Зачем?
Благодаря!
WP_Query
не имеет аргумента child_of
.
Возможно, вы ищете post_parent
или post_parent__in
, см. Параметры сообщений и страницы .