- Published on
WordPress Popular Postsをウィジェット外で表示する方法
目次
ふと思い立ったので記事にしました。
お役に立てれば幸いです。
WordPress Popular Postsは人気記事をランキング形式で表示するプラグインで、基本的にウィジェット(サイドバー)で表示するものですね。
ときには別の場所に表示させたいこともあるかと思います。
任意の場所に表示する
そんなときに使う基本的なコードがこちら
//デフォルトで過去24時間で最も多く表示された投稿(最大10件)が表示される
<?php
if(function_exists('wpp_get_mostpopular')){
wpp_get_mostpopular();
}
?>
このコードを任意のテンプレートに埋め込めば人気記事が表示されます。
任意のテンプレートはたとえば、「single.php」「page.php」などです。
フロントページ(TOPページ)が任意のテンプレートに設定されている場合はそのテンプレートに追記します。
テンプレートに埋め込む例
//single.phpの例
<?php
get_header();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class('article') ?> itemscope="itemscope" itemprop="blogPost" itemtype="https://schema.org/BlogPosting">
<?php
if ( have_posts() ) {
while ( have_posts() ) {
the_post(); ?>
<?php
} // end while
} //have_posts end if ?>
</article>
<!--WordPressPopularPosts追加部分 -->
<h3>今日の人気記事</h3>
<?php
if(function_exists('wpp_get_mostpopular')){
wpp_get_mostpopular();
}
?>
<!--WordPressPopularPosts追加部分ここまで -->
<?php
get_footer();
?>
PV数を消す設定
これで表示はできます。が、PV数がそのまま表示されているので消してみます。
//PV数を消して任意の場所に表示する
$args = array(
'stats_views' => 0
);
wpp_get_mostpopular($args);
設定できるパラメータの例
他にも期間や表示数、PVではなくコメント数順など設定できることは色々ありまして、パラメータを設定することで反映させます。
//パラメーターの例
$args = array(
'limit' => 5, //5記事分を表示
'range' => 'last7days', //過去7日間、 他に設定できる期間"last24hours", "last7days", "last30days", "all"
'pid' => '60,25,31' //除外したい投稿ID
'cat' => '1,55,-74' //カテゴリーで絞り込む(−をつけるとそのカテゴリが除外になる)
'taxonomy' => 'post_tag', // タクソノミーで絞り込む(タグ)
'term_id' => '118,75,15', //絞り込むタクソノミーのID
'order_by' => 'comments', //コメント数で並び替え
'title_length' => 25', //表示するタイトルの文字数を制限
'excerpt_length' => 55, //抜粋する文字数
//抜粋を表示するときは以下のタグ出力もセットで使う(クラス名などはカスタム可)
'post_html' => '<li>{thumb} {title} <span class="wpp-excerpt">{summary}</span></li>',
'thumbnail_width' => 30, //サムネイルの幅を指定
'thumbnail_height' => 30 //サムネイルの高さを指定
);
wpp_get_mostpopular($args);
より詳細なパラメータは[設定]>[WordPress Popular Posts]>[パラメーター]で確認できます。
記事一覧ページの最初に人気記事を抜粋して表示させたり、記事の最後に人気記事を表示させることもできるので、カスタマイズの幅が広がると思います。
PV数だけを表示させる場合
記事のPVだけを表示させたいときもあると思います。
そんなときはこちら
<?php
echo wpp_get_views(); //PV数だけが表示される
//指定した記事のPVを表示
echo wpp_get_views('12'); //記事IDが12のPV数が表示される
//記事一覧で各記事のPVを表示する場合(記事を取得するループ内で使う)
wpp_get_views(get_the_ID()) //get_the_ID()は自動で記事IDを取得してくれます
?>
記事のループの目印はhave_posts
記事のループってなんだ?どこ?ってときに簡単にみつける方法は、have_postsを探すといいと思います。
//基本的なループ
//パターン1
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
//
// 投稿がここに表示される
//
} // end while
} // end if
//パターン2
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
//省略
<?php endwhile; else: ?>
//省略
<?php endif; ?>
ループ内でテンプレートを読み込んでいるケースも多いです。
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
//テンプレートを読み込んでいる例
get_template_part( 'template-parts/content');
//
} // end while
} // end if
記事一覧ページの記事タイトル横にPVをそれぞれ表示させたい場合
上記でループの説明をしましたが、もう少し具体的な説明をします。
タイトルはだいたい h2 などの見出しタグで囲まれているので、みつけたらその前後など好きな場所に追記します。
get_template_part
のようにループ内でテンプレートを読み込んでいる場合はそのテンプレートを追っていきます。
get_template_part( 'template-parts/content');
この場合はtemplate-partsというディレクトリの中のcontent.phpを読み込んでいるのでそのファイルを探す
一部省略していますが以下のようなコードが見つかると思います。
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// タイトルの最後にPVを表示する場合
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a><?php echo wpp_get_views(get_the_ID()); ?></h2>
} // end while
} // end if
//要素を別に作って表示させる
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<span class="post_pv"><?php echo wpp_get_views(get_the_ID()); ?></span>
タイトルが関数で出力されているときは以下のように追記します。
//追記前
the_title( '<h2 class="entry-title heading-size-1"><a href="' . esc_url( get_permalink() ) . '">', '</a></h2>' );
//追記後
the_title( '<h2 class="entry-title heading-size-1"><a href="' . esc_url( get_permalink() ) . '">', '</a>'.wpp_get_views(get_the_ID()).'</h2>' );
ざっと説明させていただきましたが、いかがでしょうか。
気になっていた方はぜひカスタマイズしてみてください。