Je souhaite récupérer un tableau contenant les publications d'un certain utilisateur pour une catégorie de type de publication personnalisée.
Cependant, get_posts ($ arg) retourne TOUTES les publications de ce type de publication personnalisée, bien que j’aie spécifié le post_author.
<?php $pages = get_posts(array('post_type' => 'profile','post_author' => $post->post_author)); ?>
<?php var_dump ($pages); ?>
Dans cet exemple, $ post-> post_author vaut 11. Cependant, le résultat du code ci-dessus est le suivant:
array(3) {
[0]=> object(WP_Post)#343 (24) {
["ID"]=> int(2326)
["post_author"]=> string(2) "11"
..etc.}
[1]=> object(WP_Post)#352 (24) {
["ID"]=> int(2324)
["post_author"]=> string(1) "0"
...etc.}
[2]=> object(WP_Post)#395 (24) {
["ID"]=> int(2322)
["post_author"]=> string(1) "0"
...etc.}
Pourquoi get_posts () renvoie-t-il les publications des auteurs dont l'ID est et non 11?
post_author
n'est pas un paramètre valide pour get_posts
. Vous devez vraiment consulter la liste d'arguments de WP_Query
pour voir que, car get_posts()
est vraiment juste un wrapper autour de cette classe .
- auteur (int) - utilisez l'auteur id.
- nom de l'auteur (chaîne) - utilisez 'user_nicename' (NOT name).
- auteur__in (tableau) - utilisez l'auteur id (disponible avec Version 3.7 ).
- auteur__not_in (tableau) - utilisez l'auteur id (disponible avec Version 3.7 ).
http://codex.wordpress.org/Class_Reference/WP_Query#Author_Parameters
Ce que vous voulez, c'est author
sans la partie post_
. Essayez cela et ça devrait marcher.
Comme il est tout à fait difficile de savoir d'où provient $post->post_author
, le problème le plus probable est que vous ne faites pas référence à l'instance $GLOBALS['post']
de WP_Post
ou que vous avez une autre requête après votre boucle principale qui remplace la requête principale.
Votre meilleure chance sera probablement d’utiliser wp_reset_query()
. Cela réalignera l'objet $GLOBALS['wp_query']
qui contient à nouveau la requête actuelle avec $GLOBALS['wp_the_query']
, qui contient la requête principale et , puis appelle wp_reset_postdata()
pour revenir en arrière dans la requête principale.
Si cela ne résout pas le problème, certains plug-ins (ou vous-même) ou le thème ont utilisé query_posts()
, ce qui écrase l'objet global $wp_the_query
et gâche donc votre boucle.