post_limits
に関するドキュメンテーションの欠如のため、この関数とそれをいつ使うべきかについてもっと学ぶのは難しいです。以前に使用したことがない、または使用されたことがないため、使用しないことをお勧めします。
function wpcodex_filter_home_post_limits( $limit, $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
return 'LIMIT 0, 25';
}
return $limit;
}
add_filter( 'post_limits', 'wpcodex_filter_home_post_limits', 10, 2 );
私のテストに基づいて、post_limitsはpre_get_postsを使うのと同じことをします
残りをページ付けしないで条件付きで5つの投稿を返したい場合は、post_limitsまたはpre_get_postsを使用しますか
ここでは、ハードコードされた値を使用して、メインクエリのページングをposts_limits
フィルタでオーバーライドしています。
'LIMIT 0, 25'
0
はオフセット、25
は表示する投稿数です。
そのため、この場合はpre_get_posts
を次のように使用します。
$query->set( 'posts_per_page', 25 );
ページングについて心配する必要はありません。
残りをページ付けしないで条件付きで5つの投稿を返したい場合は、post_limitsまたはpre_get_postsを使用しますか
後で改ページが必要であると判断した場合は、posts_limits
コードを修正する必要があります。 pre_get_posts
フィルタは現状のままで動作するでしょう、そしてそれ故に我々はそれが少なくとももっと「将来的に保証された」方法であると言うことができます。
もう1つのこと:get_posts()
またはWP_Query()
を suppress filtersと共に使用していた場合、posts_limits
フックはアクセス可能であるのにpre_get_posts
フィルターは使用できません。
pre_get_posts
を使用すると、リクエストの非常に早い段階でクエリ引数を変更できます。 WP_Query
引数を介してLIMIT
など、有効なposts_per_page
引数となるものを変更できます。これにより、データベースクエリSQLの一部のみを変更できるposts_limits
よりもはるかに広い範囲の効果が可能になります。
あなたの場合、pre_get_posts
を使用します。コアコードがページネーションを管理するためです(少なくともこれがメインのquery()である場合。post_limits
を使用する場合は、ページネーションを追跡および管理する必要があります- 「0,25」は自分で分割し、ページングするたびに値を増やします。