質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1487閲覧

wordpress(PHP)で開始~最新の投稿をすべて表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/10/16 02:50

前提・実現したいこと

wordpressにて、バックナンバーページで過去から現在のすべてを表示したいのですが、
最新10件しか表示されず、古いものから順に表示されなくなってしまいます。
開始年からのすべてを表示させるにはどのように修正すればよいでしょうか。

発生している問題

バックナンバーの表示が最新10件しか表示されない。

該当のソースコード

<?php get_header(); ?> <?php APP_breadcrumb(); ?> <!-- /#breadcrumb --> <main id="content"> <div class="post-content backnumber-content"> <header class="page-title"> <div class="inner"> <h1>バックナンバー</h1> </div> </header> <?php $years = array(); while(have_posts()) : the_post(); $year = get_the_time('Y'); if(array_search($year, $years) === false) $years[] = $year; endwhile; $years = array_reverse($years); ?> <nav class="category-nav"> <ul> <?php foreach($years as $year) : ?> <li><a href="#section-year<?php echo $year; ?>"><?php echo $year; ?>年度</a></li> <?php endforeach; ?> </ul> </nav> <div class="post-body"> <?php $last_year = ''; while(have_posts()) : the_post(); $thumb_id = get_post_thumbnail_id(); if($thumb_id) $thumb = wp_get_attachment_image_src($thumb_id, 'full'); $year = get_the_date('Y'); ?> <?php if($last_year != '' && $last_year != $year) : ?> </div> </section> <?php endif; ?> <?php if($last_year != $year) : ?> <section id="section-year<?php echo $year; ?>"> <h2><?php echo $year; ?>年度バックナンバー</h2> <div class="articles"> <?php endif; ?> <article> <div class="inner"> <header> <h3><?php the_title(); ?></h3> </header> <div class="article-body"> <?php if($thumb) : ?><div class="image"><img src="<?php echo $thumb[0]; ?>" alt=""></div><?php endif; ?> </div> <a href="<?php echo get_field('backnumber_link'); ?>" target="_blank" class="button"><img src="<?php echo get_stylesheet_directory_uri(); ?>/assets/images/magazine-view.png" alt=""><span>試読</span></a> </div> </article> <?php $last_year = $year; endwhile; ?> </div> </section> </div> </div> </main> <!-- /#content --> <?php get_footer(); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ループ条件が指定されていないと、ダッシュボード(管理画面)の「表示設定」( /wp-admin/options-reading.php )で、設定した件数しか表示されません。

pre_get_posts フックを使って、メインループの条件を変更する。

function change_posts_per_page_tt152266($query) { /* 管理画面,メインクエリに干渉しないために必須 */ if ( is_admin() || ! $query->is_main_query() ){ return; } /* アーカイブページの表示件数を変更する */ if ( $query->is_archive() ) { $query->set( 'posts_per_page', '-1' ); // 1ページの表示件数 : -1 => 全件 return; } } add_action('pre_get_posts', 'change_posts_per_page_tt152266' );

または、WP_Query で、ループの条件を決めて、下記のように使います。

$args = array( 'posts_per_page' => -1, // 1ページの表示件数 : -1 => 全件 ); $the_query = new WP_Query( $args ); if ( $the_query->have_posts() ) { while ( $the_query->have_posts() ) { $the_query->the_post(); echo get_the_title(); // ここで表示処理 } /* Restore original Post Data */ wp_reset_postdata(); }

参考URL

投稿2018/10/16 04:05

編集2018/10/16 05:59
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/16 05:47

ご回答ありがとうございます。 function.php内にご教示いただいたソースコードを挿入したところ、全件表示できました。 しかし、サイト内のすべてのカテゴリなどで全件表示されてしまいます。 投稿ページ用のarchive.phpとバックーナンバーページ用のarchive-backnumber.phpで使い分けをしているのですが、特定のアーカイブ(バックナンバー用)のみを全件表示にすることはできないでしょうか。
CHERRY

2018/10/16 05:58 編集

その辺りがよくわからなかったので、一般的な記載だけにとどめました。 archive-backnumber.php ということは、 post_type が、` backnumber ` ということでしょうか? そうであれば、` $query->is_archive() ` の部分を ` is_post_type_archive( 'backnumber' ) ` としてください。 または、テンプレート判別の ` is_page_template( 'archive-backnumber.php' ) ` の方がいいかもしれません
退会済みユーザー

退会済みユーザー

2018/10/16 06:36

早速のご回答ありがとうございます。また、説明不足で申し訳ございませんでした。 おっしゃるとおり post_type が、` backnumber ` でした。 ご教示いただいた通り` is_post_type_archive( 'backnumber' ) `で解決いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問