ページネーションが効かない原因とquery_posts

WordPressのページ送りが個人的に難所だったのでとっても助かった。

諦めないで…!WordPressでページ送りがうまく行かない時の3つの対処法+究極奥義
http://webimemo.com/wordpress/1813

表示設定を1件にする
下記の記述を試してみる

<?php if (have_posts()) : query_posts($query_string . '&posts_per_page=4&cat=3&paged='.$paged); ?>

これで解決したのだけど、
query_postsという記述方法は問題が多いので推奨されていないらしい。
下記がとてもわかり易かった。

query_postsを捨てよ、pre_get_postsを使おう
http://notnil-creative.com/blog/archives/1688

WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_posts、WordPressループまとめ】
http://notnil-creative.com/blog/archives/1996

基本文法

function 関数( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;
 
    if ( クエリーの改変を適用する条件 ) {
        $query->set( 'パラメーター', '値' );
        return;
    }
}
add_action( 'pre_get_posts', '関数名' );

例えばこんな記述をしてみたり

global $post;
$args = array( 'posts_per_page' => 5, 'cat' => 1 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) {
    setup_postdata($post);
    ?>
    <h1><?php the_title(); ?></h1>
    <?php
}
wp_reset_postdata();

投稿者:

ayako0802

フロントエンドエンジニア