Enquanto o filtro pre_get_posts
permitir que você modifique a consulta principal antes que ela aconteça, permitindo que você adicione requisitos extras, nesse caso não é necessário! Você pode fazer tudo com o URL e o formulário de pesquisa
Primeiro, as variáveis de consulta passadas para WP_Query
podem ser usadas na URL. post_parent
sendo a consulta que você está querendo.
Então, se tivermos isso:
<form action="/" method="get">
<input type="text" name="s" />
<input type="hidden" name="post_parent" value="<?php echo (int)get_the_ID(); ?>"/>
<input type="hidden" name="post_type" value="page"/>
</form>
Todos os resultados da pesquisa serão limitados àqueles cujo post_parent é a página de origem da pesquisa. Você verá URLs como /?s=test&post_parent=123
.
Esse truque pode ser usado para filtrar por categorias e autores, por exemplo, pesquisando uma categoria:
/category/example/?s=test
Exibindo apenas postagens de um autor específico em um arquivo de data:
/2016/?author=123