質問: Wordpressでテーマを自作しています。 縦長系のデザインをしたテーマを作っています。 Index.phpには最新5件のお知らせを(Post)を表示されるようにしました。 ``` ``` を使用しました。 投稿が5件以上言った場合、(過去の記事はこちら)というリンクを表示させて、 Index.phpとは別に記事全部が表示されるページを作成したいと思っています。 Index.phpにnext_posts_link()を利用すると縦長デザインのため非常に見づらくなってしまいます。 質問です。 1 記事全部を表示さるページはアーカイブページとして作成すればいいのでしょうか? アーカイブの場合、Indexからアーカイブに飛ぶにはリンクには何て書けばいいのでしょうか?(プログラム) (もしかしたら私がアーカイブページの意味を誤認識してる場合もあります。) 2 投稿が5件以上の場合のみ、(過去の記事はこちら)のリンクを表示させるにはどのような条件分岐を使えばいいでしょうか? ※記事全部が表示されるページにはnext_posts_link()を使用しようと思っています。 以上です。説明がわかりづらくてすみません。 もし解る方いましたら解答宜しくお願い致します。 説明不足がありましたら返信しますので解答にお願いします。 追記 イメージはこのような形です。 参考にしたサイト Indexにはニュースが5件、See All で全てのページに飛ばす。
回答: 【2, トップページで5件以上ならばmoreボタン】 私はこういったコードで書きます。 ``` 過去の記事はこちら ``` 「5件以上なら...」ではなく、「次のページがあれば...」という意味のコードになります。 つまり結果的に「5件以上ならば」と同じ意味になります。 【query_postsについて】 トップページでの件数制御に「query_posts」を使われているとのことですが、query_postsはメインクエリを変更してしまう上、パフォーマンスも悪く、WordPressも公式に非推奨としていますので削除して下さい。 代わりに、pre_gets_postで制御しましょう。 pre_gets_postはfunctions.phpのどこかに記述して下さい。 ``` //トップ新着記事のループ制御 function pre_get_posts_top($query) { if( is_admin() || ! $query->is_main_query() ){ return; } if ( $query->is_home() ) { //トップページのみ $query->set( 'posts_per_page', '5' ); //件数制御 return; } } add_action( 'pre_get_posts', 'pre_get_posts_top' ); ```