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

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

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

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

ページネーション

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

HTML

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

Q&A

解決済

1回答

3464閲覧

wordpressのプラグインpopular postsの出力結果にページネーションを付けたい

musashidayo

総合スコア54

WordPress

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

ページネーション

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

HTML

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

0グッド

0クリップ

投稿2018/05/14 07:16

編集2018/05/14 09:15

wordpressのプラグインを用いてこちらのサイト(https://wpwand.com/2016/11/extends-wordpresspopularposts-class/)を参考にして

php

<?php global $options;  $period = 'all'; $options = [ 'range' => $period, // 集計する期間(weekly,monthly,all) 'order_by' => 'views', // 閲覧数で集計(comments(コメント数で集計),avg(1日の平均で集計)) 'post_type' => 'post', // ポストタイプを指定(post,page,カスタムポスト名) 'title_length' => '25', // 表示させるタイトル文字数 'excerpt_length' => '55', // 抜粋文字数 'stats_comments' => '0', // コメント数表示(1 or 0) 'limit' => 999999999, // 表示数 'stats_views' => '1', // 閲覧数表示(1 or 0) ]; $q = new WPP_Query($options); $my_posts = $q->get_posts(); ?> <ul class="wpp-list"> //ループの中身 </ul> <?php $max_num_pages = $my_posts->max_num_pages; responsive_pagination($max_num_pages);

functions.php

function responsive_pagination($pages = '', $range = 4) { $showitems = ($range * 2) + 1; global $paged; if (empty($paged)) $paged = 1; //ページ情報の取得 if ($pages == '') { global $wp_query; $pages = $wp_query->max_num_pages; if (!$pages) { $pages = 1; } } if (1 != $pages) { echo '<ul class="pagination" role="menubar" aria-label="Pagination">'; //先頭へ if ($paged !== 1) { echo '<li class="first"><a href="'.get_pagenum_link(1).'"><span>First</span></a></li>'; } //1つ戻る if ($paged !== 1) { echo '<li class="previous"><a href="'.get_pagenum_link($paged - 1).'"><span>Previous</span></a></li>'; } //番号つきページ送りボタン for($i=1; $i <= $pages; $i++) { if(1 != $pages &&(!($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems)) { echo ($paged == $i)? '<li class="current"><a>'.$i.'</a></li>':'<li><a href="'.get_pagenum_link($i).'" class="inactive" >'.$i.'</a></li>'; } } //1つ進む if ($paged !== (int)$pages) { echo '<li class="next"><a href="'.get_pagenum_link($paged + 1).'"><span>Next</span></a></li>'; } //最後尾へ if ($paged !== (int)$pages) { echo '<li class="last"><a href="'.get_pagenum_link($pages).'"><span>Last</span></a></li>'; } echo '</ul>'; } }

これにページネーションをつけようとしたのですが、ページネーションが表示されません。
元々はプラグインに用意されているwpp_get_mostpopular();で表示していたのですが、これだとhtmlタグまで含まれていて不便だったので、WPP_Query()を使っています。

追記:
get_postsにページネーションを付ける方法を調べども、query_postsやWP_Queryを使ってwhile文でループを回しているものしか出てこなく困っています。
WPP_queryについて詳しいことが書かれたものが見つからないので、この形のままページネーションを付けたいです。

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

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

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

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

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

kszk311

2018/05/14 07:23

WPP_Queryではなく、WP_Queryでは?
musashidayo

2018/05/14 07:25

WPP_Queryというクラスがあるらしく、そちらを使っています。WP_Queryを使いたかったのですが、こちらですとデイリーやマンスリーの絞り込みが出来なくて手詰まっています。
guest

回答1

0

ベストアンサー

php

1 global $wp_query; 2 $pages = $wp_query->max_num_pages;

ここの箇所
$wp_queryWPP_Queryで取得した$qに変える必要があるのでは…?

投稿2018/05/14 07:35

kszk311

総合スコア3404

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

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

musashidayo

2018/05/14 08:27

書き換えても表示は変わらずでした。 こちら(https://unskilled.site/wordpress%E3%81%A7%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%9A%E3%81%AB%E7%B0%A1%E5%8D%98%E3%81%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%8D%E3%83%BC%E3%82%B7%E3%83%A7/)のサイトの書き方を参考にして $big = 9999999999; $arg = array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'current' => max( 1, get_query_var('paged') ), 'total' => $q->max_num_pages ); echo paginate_links($arg); と書いても全く表示が変わりません
musashidayo

2018/09/12 08:54

自分の書き方が悪かったようで最初から書き直したらちゃんと動きました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問