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

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

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

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

PHP

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

Q&A

解決済

2回答

725閲覧

【IF文の条件分岐】「もっと見る」をクリックして最後のページまできたら「最後のページ」と表示したい

abi_chan

総合スコア29

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/09/04 07:36

編集2018/09/04 08:42

Wordpressでトップページに投稿一覧を出力し、
ページネーションはナンバリングではなく、「もっと見る」として次ページをajaxで追加読み込みをしようと思っています。

「もっと見る」のコードを下記のようにソースを書いています。

<?php if($paged < $wp_query->max_num_pages): ?> <div class="w100par ctxt" id="next"> <p><a href="<?php echo next_posts($wp_query->max_num_pages, false); ?>">もっと見る</a> </p> <p><img id="loading" class="mauto" src="<?php echo get_stylesheet_directory_uri() ?>/images/loading.gif" alt="読み込み中" width="29" height="29"> </p> </div> <?php elseif($paged == $wp_query->max_num_pages): ?> 最後のページ <?php endif;?> <script> var maxpage = <?php echo $wp_query->max_num_pages; ?>; jQuery( '#loading' ).css( 'display', 'none' );  // ローディング画像は一旦消す。 jQuery.autopager( { content: '.itiran dl', // 読み込むコンテンツ link: '#next a', // 次ページへのリンク autoLoad: false, // スクロールの自動読込み解除 start: function ( current, next ) { jQuery( '#loading' ).css( 'display', 'block' ); jQuery( '#next a' ).css( 'display', 'none' ); }, load: function ( current, next ) { jQuery( '#loading' ).css( 'display', 'none' ); jQuery( '#next a' ).css( 'display', 'block' ); } } ); jQuery( '#next a' ).click( function () { // 次ページへのリンクボタン jQuery.autopager( 'load' ); // 次ページを読み込む return false; } ); </script>

ajaxで追加読み込みはできており、正常に表示できています。
「もっと見る」をクリックすることで、URLも/page/2、/page/3と最終ページまで読み込めます。

しかし、最終ページまで表示しきった後も「もっと見る」が表示されてしまい、もう表示する投稿内容がないので、クリックしても何もおこらないです。
最終ページまできたら「最後のページ」と表示して「もっと見る」を非表示にしたいのですが、どのように条件分岐(elseif)を記述すればよいでしょうか。

どなたかご教授いただけませんでしょうか。
宜しくお願いします。

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

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

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

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

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

m.ts10806

2018/09/04 07:40

「最終ページ」を判定されている処理はありますか?AjaxでということはAjax側の処理、情報を取得する処理も提示していただけると回答を得やすくなると思います。
abi_chan

2018/09/04 08:44

ご返信ありがとうございます。ソースコードの不備がありわかりにくくて申し訳ありません。elseif文とJavascriptを追記しました。elseifに関してはちょっと自信がないですが・・
mix-peach

2018/09/06 07:45 編集

WordPress詳しくないですが・・。最終ページまで表示しきった後も「もっと見る」が表示されているなら、最初のif文がtrueになっているということなので、elseifの条件を変えたところで意味は無さそうですよ。$paged と $wp_query->max_num_pages に、想定している値が入っているのかを確認してみてはどうですか?
abi_chan

2018/09/07 09:11

ご回答ありがとうございます、$wp_query->max_num_pagesにはちゃんと値が取れておりました。どうやらjavascript側でコントロールしたらできそうでしたのでそちらでチャレンジしてみます。
guest

回答2

0

回答しておきながら申し訳ないですが、当方WPは詳しくありません。
予めご了承ください。
ただ、ご質問内容から察するに
next_posts($wp_query->max_num_pages, false)
で、評価すれば良いのではないでっか。

リンクを取得できるのであれば、

<?php if(next_posts($wp_query->max_num_pages, false) != ""): ?> ~ <?php else: ?> 最後のページ <?php endif: ?> ```※リンクを取得できなければ最後のページという考え方なので、**【戻る】**ことは考えておりません。 どうでっしゃろ?!

投稿2018/09/07 06:59

編集2018/09/07 07:19
Yousuck

総合スコア349

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

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

abi_chan

2018/09/07 09:12

ご回答ありがとうございます。ご教授いただいたコードでは動かずでしたが、どうやらjavascript側でコントロールしたらできそうでしたのでそちらでチャレンジしてみます。
Yousuck

2018/09/07 09:22

あらら、動かずでしたか。。失礼しました~
guest

0

自己解決

<script> var maxpage = <?php echo $wp_query->max_num_pages; ?>; jQuery( '#loading' ).css( 'display', 'none' );  // ローディング画像は一旦消す。 jQuery.autopager( { content: '.itiran dl', // 読み込むコンテンツ link: '#next a', // 次ページへのリンク autoLoad: false, // スクロールの自動読込み解除 start: function ( current, next ) { jQuery( '#loading' ).css( 'display', 'block' ); jQuery( '#next a' ).css( 'display', 'none' ); }, load: function ( current, next ) { jQuery( '#loading' ).css( 'display', 'none' ); jQuery( '#next a' ).css( 'display', 'block' ); } } ); jQuery( '#next a' ).click( function () { // 次ページへのリンクボタン jQuery.autopager( 'load' ); // 次ページを読み込む return false; } ); </script>

のコードの load: function ( current, next )の部分を下記のようにIF文を加えることによってとりあえず「もっと見る」リンクを非表示にすることができました。

     load: function ( current, next ) { jQuery( '#loading' ).css( 'display', 'none' ); jQuery( '#next a' ).css( 'display', 'block' );         if( current.page >= maxpage ){ //最後のページ   jQuery('#next').hide(); //次ページのリンクを隠す     } }

投稿2018/09/07 09:15

abi_chan

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問