web-dev-qa-db-ja.com

WP_Queryとはどんな種類のオブジェタイプですですか?

WP_Queryからpost_title値を返そうとすると、このエラーが発生します。

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

これがコードです:

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

このクエリの後に投稿の要素を表示する方法を教えてください。私はWP_Queryを使っています。なぜなら私はPostsとPagesの中で使われるようにショートコードを作っているからです。

3
supertrue

WP_Queryのロジックを理解しているかどうかわかりません。言葉で説明するのではなく、これがコード例です。

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

return '';

WP_Queryと対話するためのコーデックス をチェックしてください。

_ update _ :通常どおりにクエリを使用します。すなわち、 The Loop ;

<?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

エラーが発生した場合は、オブジェクトを配列として使用していることを意味します。オブジェクト要素にアクセスする場合は、->ではなく[]を使用します。$query->post_title

しかし、それはどちらもうまくいかないので、投稿をループする必要があります

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