web-dev-qa-db-fra.com

Quel type de type d'objet est WP_Query?

Je reçois cette erreur lorsque j'essaie de renvoyer la valeur post_title à partir de mon WP_Query:

**Fatal error:** Cannot use object of type WP_Query as array

Voici le code:

$query = new WP_Query( array( 'meta_key' => 'Old ID', 'meta_value' => $atts['oldid'] ) );
return $query['post_title'];

Comment puis-je afficher les éléments du message après cette requête? J'utilise WP_Query car je crée un shortcode à utiliser dans Posts et Pages.

3
supertrue

Je ne suis pas sûr que vous compreniez la logique de WP_Query. Plutôt que d'expliquer avec des mots, voici un exemple de code;

$query = new WP_Query( array( 'meta_key' => 'Old ID', 'meta_value' => $atts['oldid'] ) );
if ( $query->have_posts() )
    return $query->posts[0]->post_title;

return '';

Découvrez le codex sur l'interaction avec WP_Query .

UPDATE: Pour utiliser la requête normalement, c'est-à-dire La boucle ;

<?php if ( $query->have_posts() ) : ?>

    <?php while ( $query->have_posts() ) : $query->the_post(); ?>

        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

    <?php endwhile; ?>

<?php endif; ?>
<?php wp_reset_postdata(); ?>
5
TheDeadMedic

l'erreur que vous obtenez signifie que vous utilisez un objet comme un tableau. Si vous voulez accéder à un élément d'objet, utilisez -> et non pas [] so $query->post_title

mais cela ne fonctionnera pas non plus, vous devez boucler sur le poste

while ($query->have_posts()){
    $query->the_post();
    //here you can use the post data with the $post object
    //$post->post_title
    //$post->content
    //....
}
1
Bainternet