Filtre de recherche Wordpress uniquement pour la page avec l'enfant de l'enfant de l'enfant de l'enfant de l'enfant
1 réponses
- votes
Vouspouvezprobablementfaire quelque chose comme ça.C'estprobablementmoinsefficace,mais devraittrouvertous les descendants d'unepage donnéeplutôt que simplement lesenfants directs.
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');
You can probably do something like this. It's probably less efficient, but should find all descendants of a given page rather than just direct children.
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');
Après avoirparcouru la question de ce site,j'aitrouvé la solution de contournement:
Quandje fais cela,c'est le seulenfant de recherche duparent 21pas l'enfant de l'enfant duparent 21.
Deplus,query_varsn'accepte qu'une seule valeurpourpost_parent.
toute solutionpour celaesttrès appréciée.
merci