WordPressで人気記事をサイドバーとかに出力したいけど、どうやってやるんだろう。プラグインを使わずに出来る方法があれば知りたいな。
今回の記事は上記のような疑問やお悩みに役立つ内容となっております。
WordPressでブログを書いていると、人気記事をサイト内に出力したい時ってありますよね。
でもプラグインを使わずに実装するとなるとPHPやWordPressのテーマに関する知識が必要な実際どうやって出力したらいいか分からないもの。
なので今回は非エンジニアの方でもプラグイン無しで使えるようにコピペで使えるコードを用意しました!
というわけで前置きはこれくらいにして早速見ていきましょう。
WordPressで人気記事を出力する方法
では早速ですが、WordPressで人気記事を出力する方法についてです。
具体的には以下の3つのコードをそれぞれのファイルに張り付ければOKです。
張り付けるファイルは「functions.php」「single.php」「sidebar.php」の3つとなります。
順番に見ていきましょう。
functions.phpに貼り付ける内容
まずは以下の内容をfunctions.phpに以下の内容を貼りつけましょう。
ただ、functions.phpはかなりデリケートなファイルで書き方を少しでも間違えると画面が真っ白になって何も操作できなくなることもあるファイルです。
なので取り扱いには十分に注意しましょう。
内容を書き換える場合は必ずバックアップを取ってから作業を行うようにしたいですね。
<?php
// 記事のPVを取得
function getPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if ($count=='') {
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 View";
}
return $count.' Views';
}
// 記事のPVをカウント
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if ($count=='') {
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
} else {
$count++;
update_post_meta($postID, $count_key, $count);
}
}
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);
?>
single.phpに貼り付ける内容
以下はsingle.phpに貼り付ける内容となっております。
get_header()の任意の場所に貼り付けるようにしましょう。
以下のプログラムは記事数をカウントする内容となっています。
<?php
if (!is_user_logged_in() && !is_robots()) {
setPostViews(get_the_ID());
}
?>
sidebar.phpに貼り付ける内容
以下は実際にアクセスが多い記事を表記する内容となっています。
WordPressのサブループを使ってメインループとは別のループを出力している形です。
HTMLの部分はサイトの状況に応じて上下のmarginやpaddingを設定するようにしてください。
<div>
<p>よく読まれている記事</p>
<?php
$args = array(
'post_type' => 'post',
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'posts_per_page' => 5,
'order'=>'DESC',
);
$the_view_query = new WP_Query( $args );
if ($the_view_query->have_posts()):
while($the_view_query->have_posts()): $the_view_query->the_post();
?>
<!-- タイトル -->
<div>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</div>
<hr>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
</div>
まとめ
いかがでしたでしょうか。
プラグインを使うと動作が重くなることもありますし、できることならSEO的にもプラグインを使わずに済ませたいですよね。
そんな時は上記のコードを使って是非実装してもらえたらと思います。
というわけで今回の記事は以上となります。
また次の記事でお会いしましょう。