web-dev-qa-db-ja.com

posts_per_page制限なし

すべての投稿をquery_postsで返します。私はposts_per_pageを本当に高い数値に設定しようとしましたが、query_postsはフリークアウトして投稿を返しません。制限なしに投稿を問い合わせる正しい方法は何ですか?

$args = array(
    'post_type'      => 'post',
    'cat'            => '22,47,67',
    'orderby'        => 'name',
    'order'          => 'ASC',
    'hide_empty'     => 1,
    'depth'          => 1,
    'posts_per_page' => ?
    );
40
Banjer

-1があなたの答えです! posts_per_pageここ を探してください。

$args = array(
'post_type'      => 'post',
'cat'            => '22,47,67',
'orderby'        => 'name',
'order'          => 'ASC',
'hide_empty'     => 1,
'depth'          => 1,
'posts_per_page' => -1
);

重要な警告 :これはサイトをダウンさせる可能性がある非常に巨大なクエリになる可能性があります。データベースがそれを処理できると確信できる場合にのみこれを行ってください。公開テーマやプラグインにはありません。

78

あるいは、 WP_Query (これはquery_postsが使用するものです)をnopaging引数に渡すこともできます。これは基本的に同じことを行います。

$args = array(
    'nopaging' => true
    // Your other args, etc..
);

それは全く同じですが、後で振り返らなければならなくて、自分がしていたことを思い出せないのであれば、私は個人的にそれがより明確になると感じています。アレイ。

しかし私が述べたように、それらは両方とも実際に同じことを達成するでしょう。

1つ以上のアプローチを持っていても害はありません。あなたが知っていることを共有するのは常にいいことです。既に十分なアプローチを持っているにもかかわらず、それが私の答えの理由です。

20
t31os

あなたの子供のテーマ関数ファイルから:

add_action( 'pre_get_posts', 'wpsites_no_limit_posts' );

function wpsites_no_limit_posts( $query ) {

if( $query->is_main_query() && !is_admin() && is_home() ) {

$query->set( 'posts_per_page', '-1' );
$query->set( 'order', 'ASC' );
$query->set( 'post_type', 'post' );
$query->set( 'cat', '22,47,67' );
$query->set( 'orderby', 'name' );
$query->set( 'order', 'ASC' );
$query->set( 'hide_empty', '1' );
$query->set( 'depth', '1' );

    }

}
3
Brad Dalton

'posts_per_page' => -1は1ページに無制限の投稿を返すので、あなたの問題に対する正しい答えは-1です。

このQ/Aにアドオンを追加したいだけです。

WordPress管理パネルの閲覧設定から1ページあたりの投稿数を取得したい場合は、get_option()関数を呼び出し、それに文字列としてposts_per_pageを渡す必要があります。

$args = array(
    'post_type'      => 'post',
    'cat'            => '22,47,67',
    'orderby'        => 'name',
    'order'          => 'ASC',
    'hide_empty'     => 1,
    'depth'          => 1,
    'posts_per_page' => get_option('posts_per_page')
    );

私はこの答えが私を助けてくれるので誰かに役立つことを願っています。ハッピーコーディングStackexchangeユーザ

1
Elkhouaja

または..

function getAll($arg, $posts_per_page = 50)
{
    $data = array();
    $page = 1;

    do{
        $arg['paged'] = $page;
        $arg['posts_per_page'] = $posts_per_page;

        $query = new WP_Query($arg);

        foreach ($query->posts as $post){
            $data[] = $post;
        }

        $page++;

    }while(count($query->posts) === $posts_per_page);

    return $data;
}
0
Ricardo Canelas