web-dev-qa-db-ja.com

Get_postsによって返された投稿を外部で数える PHP スクリプト

私はwp-load.phpファイルをインクルードすることによって外部のWPスクリプトからPHPを使用しています。

get_posts()関数で投稿を取得した後、$wp_query->found_postsが機能するようにできなくなりました。

代わりに何を使用すればよいですか。

ありがとうございます。

2
Aram Boyajyan

WordPressの関数get_posts()は、グローバルにアクセスできないWP_Queryの独自のインスタンスを作成しています。

function get_posts($args = null) {
    // ... cut ...
    $get_posts = new WP_Query;
    return $get_posts->query($r);
}

だから代わりに試すことができます

 $results = get_posts($args);
 echo count($results);

get_posts()によって返されるpostオブジェクトの配列数を教えてください。

WP_Query()クラスの使用例

WP_Query()クラスを直接使用することを検討できます。

使い方の例を次に示します。

<?php
// your input parameters:   
$args = array(
    'posts_per_page' => 10,
);

$my_query = new WP_Query( $args );?>

Found posts: <?php echo $my_query->found_posts;?>

<?php if ( $my_query->have_posts() ):?>
    <ul>
        <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
            <li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
        <?php endwhile; ?>
    </ul>
<?php endif; ?>

<?php wp_reset_postdata();?>    

最後にwp_reset_postdata()を使用してグローバルな$postオブジェクトを復元します。これはthe_post()メソッドを介して変更するためです。

参照:

http://codex.wordpress.org/Function_Reference/wp_reset_postdata

http://codex.wordpress.org/Class_Reference/WP_Query

5
birgire