Wordpress

【コピペでOK!】WordPressで人気記事を出力する方法【プラグインなし】

しの

はじめまして、しのです。 WEBデザインやプログラミング、SEO、ブログ術に関する記事を主に書いています。 ブログの月間PVは約40000PV、月間収益は5桁です。 SEOで検索上位1位を約50件獲得(2023年6月時点)。

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的にもプラグインを使わずに済ませたいですよね。

そんな時は上記のコードを使って是非実装してもらえたらと思います。

というわけで今回の記事は以上となります。

また次の記事でお会いしましょう。

  • この記事を書いた人
  • 最新記事

しの

はじめまして、しのです。 WEBデザインやプログラミング、SEO、ブログ術に関する記事を主に書いています。 ブログの月間PVは約40000PV、月間収益は5桁です。 SEOで検索上位1位を約50件獲得(2023年6月時点)。

-Wordpress
-