質問: new wp_query( array ( 'posts_per_page' => 5, 'post_type' => 'post', 'paged' => $paged ) ); $pagedの内容は、期待される1として出力されます。ifステートメントにnext_posts_linkを追加しましたが、表示されません。if ( $the_query->have_posts() ) { previous_posts_link( '« newer entries' ); while ( $the_query->have_posts() ) { $the_query->the_post(); echo '<div class="news-item">'; // post stuff here echo '</div>'; } next_posts_link( 'older entries »', 0 ); } 編集これが表示されているページはフロントページではなく、私が作成した静的ページです。私はpage-news.phpテンプレートを作成してから、「news」というページを作成し、それがこのコードが存在する場所にあることを確認しました。それが理由でしょうか。
回答: これは私にとってテンプレートを使用して単一のページで機能しています。必ずnext_posts_link( 'older entries »', $the_query->max_num_pages );を設定してください。// set the "paged" parameter (use 'page' if the query is on a static front page) $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1'; $args = array ( 'nopaging' => false, 'paged' => $paged, 'posts_per_page' => '5', 'post_type' => 'post', ); // the query $query = new wp_query( $args ); // the loop if ( $query->have_posts() ) { previous_posts_link( '« newer entries' ); while ( $query->have_posts() ) { $query->the_post(); echo '<div class="news-item">'; // post stuff here echo '<h1 class="page-title screen-reader-text">' . the_title() . '</h1>'; echo '</div>'; } next_posts_link( 'older entries »', $query->max_num_pages ); } else { // no posts found echo '<h1 class="page-title screen-reader-text">no posts found</h1>'; } // restore original post data wp_reset_postdata(); https://codex.wordpress.org/function_reference/next_posts_link https://codex.wordpress.org/function_reference/previous_posts_link https://generatewp.com/wp_query/