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

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

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

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

PHP

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2467閲覧

wp 固定ページに記事一覧を表示するもページネーションが機能しない

hurousyotoku500

総合スコア27

WordPress

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

PHP

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

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/02/16 04:00

編集2020/02/18 13:54

最新の記事をトップページと固定ページの両方に表示させています。
トップページは、「MORE」というボタンで固定ページに飛ばし、ページネーションはなし。
固定ページは「page-news.php」というテンプレを作り、下記のコードを記載しているのですが、
1ページ目しか表示できません。
URLは、wordpress/news/page/2/のように変化はするのですが、
ずっと1ページ目が表示されるままです。
色々、プラグインを導入するも、変化ありません。

<?php /* Template Name: page-news */ ?> <?php get_header(); ?> <!--タイトル--> <h1 class="title"><?php the_title(); ?></h1> <div id="news-wrap"> <?php $wp_query = new WP_Query(); $my_posts = array( 'post_type' => 'post', 'posts_per_page'=> '6', 'paged' => 2, ); $wp_query->query( $my_posts ); if( $wp_query->have_posts() ): while( $wp_query->have_posts() ) : $wp_query->the_post(); ?> <!-- ループ開始 --> <div class="news-post"> <div class="post-meta"> <?php echo get_the_date(); ?> </div> <h2><?php the_title(); ?></h2> <?php the_excerpt(array(100, 100)); ?> <a class="post-image" href="<?php the_permalink(); ?>"> <?php if (has_post_thumbnail()) : ?> <?php the_post_thumbnail(array(100, 100)); ?> <?php else: ?> <span class="news-noimage">no-image</span> <?php endif; ?> </a> <a class="next-this" href="<?php the_permalink(); ?>">続きはこちら</a> </div> <?php endwhile; else: ?> <p>記事はありません!</p> <?php endif; ?><!-- ループ終了 --> <div class="navigation"> <div class="prev"><?php previous_posts_link(); ?></div> <div class="next"><?php next_posts_link(); ?></div> </div> </div> <?php get_footer(); ?>

また、「archive.php」でカテゴリ別に表示させたりした場合は、
ページネーションは、問題なく表示されます。
そのコードは下記です。

<?php /* Template Name: page-Archives */ get_header(); ?> <!-- カテゴリの説明文 --> <?php if (is_category() && //カテゴリページの時 !is_paged() && //カテゴリページのトップの時 category_description()) : //カテゴリの説明文が空でない時 ?> <div class="category-description"><?php echo category_description(); ?></div> <?php endif; ?> <div id="archive-wrap"> <?php if ( have_posts() ): ?> <?php while ( have_posts() ) : the_post(); ?> <!--ループ--> <div class="news-post"> <h2 class="ttl"><?php the_title(); ?></h2> <div class="post-meta"> <?php echo get_the_date(); ?> </div> <?php the_excerpt(array(100, 100)); ?> <a class="post-image" href="<?php the_permalink(); ?>"> <?php if (has_post_thumbnail()) : ?> <?php the_post_thumbnail(array(100, 100)); ?> <?php else: ?> <span class="news-noimage">no-image</span> <?php endif; ?> </a> <a class="next-this" href="<?php the_permalink(); ?>">続きはこちら</a> </div> <!--//ループ--> <?php endwhile; ?> <!--ページ送り--> <nav class="pagenavigation"> <?php global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages ) ); ?> </nav> <!--//ページ送り--> <?php else: ?> <!--投稿が見つからない--> <p>Not Found.</p> <!--//投稿が見つからない--> <?php endif; ?> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>

archive.phpのコードをそのままpage-news.phpにコピーしてもダメでした。
解決方法ありましたら、ご教示願います。

↓「functions.php」

<?php // ウィジェットエリア register_sidebar( array( 'name' => '私のウィジェットエリア', 'id' => 'my-sidebar', 'before-widget' =>'<div class="widget">', 'after-widget' =>'</div>', 'before-title' =>'<h3>', 'after-title' =>'</h3>' ) ); // カスタムメニューの登録 register_nav_menu('footer_menu','フッターメニュー'); register_nav_menu('top_menu','トップメニュー'); register_nav_menu('side_menu','サイドメニュー'); // タイトルタグの設定 function custom_theme_setup() { add_theme_support('title-tag'); } add_action( 'after_setup_theme', 'custom_theme_setup' ); add_theme_support('post-thumbnails'); //概要(抜粋)の文字数調整 function my_excerpt_length($length) { return 50; } add_filter('excerpt_length', 'my_excerpt_length');

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

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

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

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

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

guest

回答1

0

ベストアンサー

'paged' => 2,と決め打ちされているからではないでしょうか。

$paged = get_query_var('paged');して、取得した$pagedを使ってみてください。

追記

以下のコードを試して見てください。
以下のコードは$wp_query = new WP_Query();する前に、get_query_var('paged')しているのがポイントです。

PHP

1$paged = get_query_var('paged'); 2 3$wp_query = new WP_Query(); 4$my_posts = array( 5 'post_type' => 'post', 6 'posts_per_page'=> '2', 7 'paged' => $paged , 8);

投稿2020/02/16 08:06

編集2020/02/22 00:08
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hurousyotoku500

2020/02/16 11:59

ご回答ありがとうございます。 すいませんが、もう少し詳しく教えて頂きたいのですが、 'paged' => 2,の2の部分を変数($paged)にするということでしょうか。
退会済みユーザー

退会済みユーザー

2020/02/16 12:09

はい。get_query_var('paged')して取得した値が'paged'にくるようにしてみてください。
hurousyotoku500

2020/02/16 12:19 編集

ありがとうございます。 <?php $wp_query = new WP_Query(); $paged = get_query_var('paged'); $my_posts = array( 'post_type' => 'post', 'posts_per_page'=> '6', 'paged' => get_query_var($paged), ); のようにしたのですが変わらず、「次のページ」にいくと、 いきなり3ページ目にいくようになりました。
退会済みユーザー

退会済みユーザー

2020/02/16 12:22

`'paged' => get_query_var($paged),`ではなく、`'paged' => $paged`にしてください。今のコードだと折角取得した$pagedが使われてません。
hurousyotoku500

2020/02/16 12:46 編集

たびたび、すみません。 下記のように変更してみたのですが、やはり変わらず、 「次ページ」を押しても、2ページ目のままの状態です。 <?php $wp_query = new WP_Query(); $paged = get_query_var('paged'); $my_posts = array( 'post_type' => 'post', 'posts_per_page'=> '6', 'paged' => $paged , );
退会済みユーザー

退会済みユーザー

2020/02/18 01:33

$pagedにはどんな値が入っていますか? ここには表示しているページ番号が入っているはずです。(URLが「wordpress/news/page/2/」であれば「2」が、「wordpress/news/page/3/」であれば「3」が入っているのが想定している動作です。) また、functions.phpなどに投稿表示に影響するコードを書いていたり、なんらかのプラグインを入れていたりはしませんか?
hurousyotoku500

2020/02/18 13:57

プラグイン は、大半のものを停止させてみましたが、だめでした。 $pagedは常に「1」で、「wordpress/news/page/2/」にしても「1」のままでした。 functions.php」も追記致しましたので、みていただけないでしょうか。
退会済みユーザー

退会済みユーザー

2020/02/20 02:20

functions.phpには問題がないように見えます。 停止していないプラグインには他に何がありますか? また、(先にお尋ねしておくべきでしたが)使用しているテーマは独自テーマでしょうか? 後は駄目元で「パーマリンク設定」を更新(何も設定を変えず「変更を保存」を押す)して動きが変わらないかみてみるのはいかがでしょう。
hurousyotoku500

2020/02/20 13:18

ありがとうございます。停止していないのは、「Contact Form 7」と「Newpost Catch」で、全て停止してみましたが、やはりだめでした。 「パーマリンク設定」の更新もだめでした。 テーマは独自テーマになります。
退会済みユーザー

退会済みユーザー

2020/02/20 13:52

get_query_var('paged')のかわりに、get_query_var('page')を使ってみてもらえますか?
hurousyotoku500

2020/02/21 14:27

ありがとうございます。こちらも試してみたのですが、ダメでした…
退会済みユーザー

退会済みユーザー

2020/02/22 00:09

質問文に試してもらいたいコードを追記しました。ご確認ください。
hurousyotoku500

2020/02/22 01:54

解決しました!!!本当にありがとうございます。 助かりました。
退会済みユーザー

退会済みユーザー

2020/02/22 04:47

解決して良かったです。 一応回答文提示のコードで問題はないと思いますが、$wp_queryというのはWordPressのグローバル変数で使われている名前であるため、念のため$wp_queryは$myqueryとかの別名にしといてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問