web creating

POROA

【WordPress】プラグインなしで「読まれている記事」をランキング形式で表示する方法

プラグインでもあるのですが、重くなったり、バージョンが変わったりなど、ちょっと怖いので、自作してみました。

以下のサイトを参考させていただきました。
参考:https://manablog.org/wordpress-popular-posts-without-plugin/

1.WordPressの設定

まずは、下準備
カスタムフィールドを使用して、検索数を取得します。
カスタムフィールドは簡単に言いますと、記事ごとに設定できる独自変数になります。

この変数に訪問されるたびに数字を追加して、アクセス数をカウントします。

まず、WordPressの管理画面の投稿一覧または新規追加からブログの編集画面を表示させます。
ただ、デフォルトではカスタムフィールドは表示されていません。
そこで、上部にある「表示オプション」をクリックします。

a1
そうすると、タブが開きますので「カスタムフィールド」にチェックを入れます。

a2

そして、「カスタムフィールド」がページ下部に表示されますので名前に「post_views_count」を入力して値に0をいれましょう。ここの値がアクセス数になります。
カスタムフィールド

2.functions.phpの設定

次にfuntions.phpに以下の以下の関数を挿入します。
書き出し用とカウントアップ用の関数になります。
//書き出し用
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';
}

//カウントアップ用
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);
	}
}

3.singl.phpの修正

そして、記事ページ(私はsingl.php)の上部あたりに以下のfunrions.phpに設定したカウントアップ用関数を挿入します。
これを、挿入することによって、ページが開かれるたびにカスタムフィールドの「post_views_count」を1ずつカウントアップしていきます。

<?PHP
setPostViews( get_the_ID() );
?>

4.content-single.phpの修正

最後にconten-single.phpに表示させるために以下の文を挿入してください。

<?php
  $posts = get_posts(array('meta_key'=>'post_views_count','orderby'=>'meta_value_num','posts_per_page'=>'8','order'=>'DESC'));
  $i = 1 ;
?>
<? if($posts){ ?>
  <? foreach($posts as $post){ ?>
    <? setup_postdata($post); ?>
    <ul>
      <li><?=$i?>位</li>
      <li><a href="<?=get_permalink()?>"><?php the_post_thumbnail(array(143,143)); ?></a></li>
      <li><?php the_title( sprintf( '<h2><a href="%s">', esc_url( get_permalink() ) ), '</a></h2>' ); ?></li>
    </ul>
    <? $i++ ?>
  <? } ?>
<? } ?>

2行目でpost_views_countの値で並べ替えをしてデータを取得しています。
ちなみに「posts_per_page」で表示する件数を変えられます。
3行目でiに1を代入し
foreachで回すごとにiをカウントアップして9行目で表示しています。

以上です。ちょっと難しいところもありますが、プラグインを使うと細かい修正ができなかったり、サイトスピードが遅くなる場合があるので、もしそのあたりが気になる方はこちらを使用してみてください。
著者:poroa | 投稿日:2016年09月05日 | カテゴリ:WordPress
■最新記事
■カテゴリ一覧
CSS
Excel
Google Analytics
HTML
jQuery
PHP
SEO
WordPress
ホームページ作成
ホームページ作成講座
未分類
楽天
■アーカイブ
2018年9月
2016年12月
2016年11月
2016年10月
2016年9月
2016年8月
■ランキング