すべての投稿を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' => ?
);
-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
);
重要な警告 :これはサイトをダウンさせる可能性がある非常に巨大なクエリになる可能性があります。データベースがそれを処理できると確信できる場合にのみこれを行ってください。公開テーマやプラグインにはありません。
あるいは、 WP_Query
(これはquery_posts
が使用するものです)をnopaging
引数に渡すこともできます。これは基本的に同じことを行います。
$args = array(
'nopaging' => true
// Your other args, etc..
);
それは全く同じですが、後で振り返らなければならなくて、自分がしていたことを思い出せないのであれば、私は個人的にそれがより明確になると感じています。アレイ。
しかし私が述べたように、それらは両方とも実際に同じことを達成するでしょう。
1つ以上のアプローチを持っていても害はありません。あなたが知っていることを共有するのは常にいいことです。既に十分なアプローチを持っているにもかかわらず、それが私の答えの理由です。
あなたの子供のテーマ関数ファイルから:
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' );
}
}
'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ユーザ
または..
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;
}