WordPress のメモ書きです。
WordPress のトップページやカテゴリページで表示する記事一覧の数を PC とスマホで変えたいと思ったので調べてみました。
PC だったら 20 件位一覧に表示させた方が都合が良かったりもしますが、それをスマホで見た時は異常に長い表示になってしまうのでイマイチ。スマホで見た時は 10 件位が表示されるようにしたいという具合です。
で、辿り着いたのがこの方法。
テーマファイルの functions.php に追加するだけで PC とスマホの表示件数をわける事ができる。
function mobile_pre_get_posts( $query ) { if ( ! is_admin() && wp_is_mobile() && $query->is_main_query() ) { $query->set( 'posts_per_page', 10 ); } } add_action( 'pre_get_posts', 'mobile_pre_get_posts' );
pre_get_posts はクエリを取得する前に実行されるフックで、管理面を除くモバイルアクセスのメインクエリに働くような処理になります。
このメインクエリってのがイマイチ理解出来てない部分もありますが、一覧ページだとかカテゴリページだとかの記事データを取得するクエリの事だと思う。
is_main_query() の判定を入れないと最新記事とか関連記事とかで表示している部分にも影響するからそういう事だと思う。
と、こんな具合に簡単にできました。