web-dev-qa-db-fra.com

Le paramètre post_parent WP_Query renvoie toujours les enfants de la page en cours

Et bien le titre donne tout ça ...

Voici le code:

$args = array(
"post_type" => "page",
"post_parent" => $cat, // runs through a loop of 5, 128, 130
"posts_per_page" => -1
);

print_r($args);

$postsLang = new WP_Query($args);

while ($postsLang->have_posts()) {
    $postsLang->the_post();
    $postID = get_the_ID();
    array_Push($result, $postID);
}
wp_reset_query();

print_r($result);

Voici les sorties print_r:

Array ( [post_type] => page [post_parent] => 5 [posts_per_page] => -1 ) 
Array ( [0] => 30 [1] => 23 ) 

Array ( [post_type] => page [post_parent] => 128 [posts_per_page] => -1 ) 
Array ( [0] => 30 [1] => 23 ) 

Array ( [post_type] => page [post_parent] => 130 [posts_per_page] => -1 ) 
Array ( [0] => 30 [1] => 23 ) 

Ainsi, les $ args entrent correctement dans la requête, mais le résultat est toujours le même: les ID des enfants de la page actuelle (ID = 5).

Je peux même définir post_parent static à dire 128 et toujours obtenir les enfants de la page en cours.

Si je supprime le paramètre post_parent, toutes les pages sont obtenues (comme il se doit).

J'ai le même problème avec get_posts, ce qui me fait penser que la syntaxe est correcte mais que je risque de mal comprendre le comportement du paramètre post_parent?!

Des pensées très appréciées !!

1
Steve222

post_parent retourneseulementles pages enfants de la page dont l'ID est donné comme valeur.

post_parent(int) - utilise l'identifiant de page pour renvoyer uniquement les pages enfants. Défini sur 0 pour renvoyer uniquement les entrées de niveau supérieur

Pour obtenir uniquement une page spécifique, utilisez plutôt page_id ou pagename ou post__in (en conjonction avec post_type=page.

Je suggérerais que vous utilisiez plutôt get_pages , qui est spécifiquement là pour interroger des pages.

Juste une note ici, wp_reset_query() est utilisé en conjonction avec query_posts. Vous devriez utiliser wp_reset_postdata() avec WP_Query

-

Voici la solution des commentaires ci-dessous:

Polylang crée un nouveau paramètre personnalisé "lang". Ce paramètre semble prendre "" par défaut, ce qui est supposé renvoyer les publications avec any value. Au lieu de cela, il renvoie uniquement les publications avec la langue de la page actuelle (par conséquent, seuls les enfants dont l'ID de la page actuelle est = 5) En guise de solution, je passe maintenant manuellement en revue les valeurs disponibles pour "lang" pour obtenir les pages contenant toutes les valeurs correspondant à "lang". Je vérifierai auprès de l'auteur du plugin s'il s'agit d'un bogue ou s'il est dû à mon environnement.

0
Pieter Goosen