WordPressのプラグイン「Popular Posts」はとても便利です。人気記事表示ではもうこれしかない感じではないでしょうか。集計期間も月や週など分けれますし、デフォルトでサムネイル生成機能もついています。今やっている案件でも有りがたく使わせてもらっています。
そこで問題が。制作サイトにはカスタム投稿が3つ設置されていて、その全ての記事を合わせたランキングを表示したいのですがエラーが出てしまいました。ググッてみたもののプラグイン自体をカスタマイズする方法は出ましたがその記事もちょっと古い・・・。ウィジェットではなくテンプレートへの直接記述の方法をとっています。
ソースファイルのwordpress-popular-posts.phpを見てみたら解決したのでメモります。
目次
まずは普通にテンプレートタグとして使う方法を紹介
$args = array(
'limit' => 4, //表示数
'range' => 'weekly', //期間
'order_by' => 'views', //ソート順
'post_type' => 'post', //投稿タイプ(カスタム投稿のタイプ名でもOK)
'title_length' => '32', //タイトル文字数上限
'thumbnail_width' => 100, //サムネイルの横幅
'thumbnail_height' => 100, // サムネイルの高さ
'stats_comments' => 0, //コメント表示しない(0)
'stats_views' => 0, //閲覧数を表示しない(0)
'stats_author' => 0, //投稿者を表示しない(0)
'stats_date' => 1, //日付を表示しない(0)
'stats_date_format' => 'Y.n.j', // 付のフォーマット
'stats_category' => 1, //カテゴリを表示しない(0)
'wpp_start' => "", // リストの開始タグ
'wpp_end' => "", // リストの終了タグ
'post_html' => // HTMLの出力フォーマット ↓以下に記述 プラグインの値出力は{url}など幾つかあります
"
<article>
<a href='{url}'>
<figure>{thumb}</figure>
<p>{text_title}</p>
</a>
</article>
"
);
wpp_get_mostpopular($args);
重要なのは「post_type」と「post_html」、そしてpost_html内の記述です。post_typeにはデフォルトでpostとpageが含まれています。カスタム投稿を表示したい場合はカスタム投稿のタイプ名を記述すると表示できます。
Popular Postsのランキング一覧に複数のカスタム投稿を含めたい場合
プラグインを改造しなくてもデフォルトで複数含めることができます。(バージョン 3.2.1で確認)
方法は「post_type」へカスタム投稿のタイプを複数記述するだけです。書き方は以下になります。
'post_type' => 'post,page,hoge,hage'
これだけです。僕は無駄にarray使って複数入れようとして失敗した口です・・・。
使っていないので未確認ですがウィジェットであれば管理画面から複数のカスタム投稿を指定できるのかな?
おまけ:Popular Postsの初期出力の設定
※このままで記述しても使えないと思います。注意です。あくまでチート表として。
protected $defaults = array(
'title' => '',
'limit' => 10,
'range' => 'daily',
'freshness' => false,
'order_by' => 'views',
'post_type' => 'post,page',
'pid' => '',
'author' => '',
'cat' => '',
'shorten_title' => array(
'active' => false,
'length' => 25,
'words' => false
),
'post-excerpt' => array(
'active' => false,
'length' => 55,
'keep_format' => false,
'words' => false
),
'thumbnail' => array(
'active' => false,
'width' => 15,
'height' => 15
),
'rating' => false,
'stats_tag' => array(
'comment_count' => false,
'views' => true,
'author' => false,
'date' => array(
'active' => false,
'format' => 'F j, Y'
),
'category' => false
),
'markup' => array(
'custom_html' => false,
'wpp-start' => '<ul class="wpp-list">',
'wpp-end' => '</ul>',
'post-html' => '<li>{thumb} {title} {stats}</li>',
'post-start' => '<li>',
'post-end' => '</li>',
'title-start' => '<h2>',
'title-end' => '</h2>'
)
コメント