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

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

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

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

Q&A

解決済

1回答

1543閲覧

Wordpress Popular postsのカスタマイズ:paginaiton

koevi97118

総合スコア17

WordPress

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

0グッド

0クリップ

投稿2019/05/10 12:01

### 現状
Wordpress popular postsを用いて、固定ページに以下のコードで人気記事一覧を呼び出しています

php

1<?php wpp_get_mostpopular( 2 array( 3 // PV集計期間(daily, weekly, monthly, all から選べます) 4 'range' => '14days', 5 6 // PV数順で並び替え(comments を指定するとコメント順になります) 7 'order_by' => 'views', 8 9 // post OR page 10 'post_type' => 'post', 11 12 'pid'=>'2661,2658,2716,2694', 13 // 表示数 14 'limit' => 10, 15 16 17 // 閲覧数表示するか(1なら表示、 0なら非表示) 18 'stats_views' => '0', 19 20 // HTMLのラッパー 開始タグ 21 'wpp_start' => '<div class="wpp-posts-container">', 22 23 // HTMLのラッパー 終了タグ 24 'wpp_end' => '</div>', 25 26 // サムネイル画像の幅 27 'thumbnail_width' => '480', 28 29 // サムネイル画像の高さ 30 'thumbnail_height' => '300', 31 32 // 投稿日時表示 33 'stats_date' => true, 34 'stats_date_format' => 'Y/m/d', 35 36 'stats_author' => true, 37 38 // HTML部分 39 'post_html' => ' 40 <article> 41 <div class="wpp-card"> 42 <header> 43 <div class="post-thumbnail">{thumb}</div> 44 </header> 45 <section> 46 <div class="wpp-card-title"> <h2>{title}</h2></div> 47   <span class="wpp-meta post-stats">{stats}</span> 48 </section> 49 </div> 50 </article>' 51 ) 52); 53 54?>

今回、これを30件くらい表示しようと思うのですが、ユーザビリティの観点からもpagination(通常の記事一覧と同じように10件ごとにページを分ける)がしたいなと思っています

'posts_per_page' => 10,

などと書いてみたのですがうまくいかず、ご相談させていただきます
どなたかご存知でしたらお教えください!!

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

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

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

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

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

guest

回答1

0

ベストアンサー

wpp_get_mostpopular()はショートコード「wpp」実行結果を返す関数ですが、
ページャー部分のhtmlを出力する機能は無い様です。
'offset' => 10, といったようなパラメータを渡せば、2ページ目以降に該当するデータを出力することはできます。

ソースコード

複雑な出力をするのであればwpp_postフィルタを使うのが良さそうです。

PHP

1function my_wpp_post_filter($post, $post_object, $options) 2{ 3 // 出力加工処理 4 5 return $post; 6} 7add_filter('wpp_post', 'my_wpp_post_filter', 10, 3); 8

投稿2019/05/11 02:57

Eggpan

総合スコア2727

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

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

koevi97118

2019/05/11 05:47

回答ありがとうございます このコードをfunctions.phpに書いた上で どのように自分が質問に貼ったコードを書き換えればよろしいのでしょう? 初心者でよくわかっていないもので...よろしくおねがいいたします
Eggpan

2019/05/11 08:00

wpp_get_mostpopular() に渡すパラメータとしては 'offset' => 10, とすれば、人気記事の11件目から表示(つまり2ページ目)を取得することは可能です。 ただ、pagination処理は自前でなんとかしないといけないので、URLをどうするかなど考慮した上でhtml出力部分は自力で作る必要がありそうです。 質問から読み取れなかったのですが、例えば「人気記事の2ページ目」を表示する際 ・URLはどのようにする予定でしょうか ・他の記事はどのように表示される予定でしょうか 人気記事だけ一覧として出してページをめくることができればよいのか、 個別記事の中に人気記事をだして、個別記事はそのままに人気記事のページをめくりたいのか、 普通の記事の一覧の中に人気記事の一覧もあって、それぞれページをめくることができるのか それぞれコード内容がかなり変わってきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問