【WordPress】プラグインなしで「読まれている記事」をランキング形式で表示する方法
プラグインでもあるのですが、重くなったり、バージョンが変わったりなど、ちょっと怖いので、自作してみました。
以下のサイトを参考させていただきました。
参考:https://manablog.org/wordpress-popular-posts-without-plugin/
カスタムフィールドを使用して、検索数を取得します。
カスタムフィールドは簡単に言いますと、記事ごとに設定できる独自変数になります。
この変数に訪問されるたびに数字を追加して、アクセス数をカウントします。
まず、WordPressの管理画面の投稿一覧または新規追加からブログの編集画面を表示させます。
ただ、デフォルトではカスタムフィールドは表示されていません。
そこで、上部にある「表示オプション」をクリックします。
そうすると、タブが開きますので「カスタムフィールド」にチェックを入れます。

そして、「カスタムフィールド」がページ下部に表示されますので名前に「post_views_count」を入力して値に0をいれましょう。ここの値がアクセス数になります。
書き出し用とカウントアップ用の関数になります。
これを、挿入することによって、ページが開かれるたびにカスタムフィールドの「post_views_count」を1ずつカウントアップしていきます。
2行目でpost_views_countの値で並べ替えをしてデータを取得しています。
ちなみに「posts_per_page」で表示する件数を変えられます。
3行目でiに1を代入し
foreachで回すごとにiをカウントアップして9行目で表示しています。
以上です。ちょっと難しいところもありますが、プラグインを使うと細かい修正ができなかったり、サイトスピードが遅くなる場合があるので、もしそのあたりが気になる方はこちらを使用してみてください。
以下のサイトを参考させていただきました。
参考:https://manablog.org/wordpress-popular-posts-without-plugin/
1.WordPressの設定
まずは、下準備カスタムフィールドを使用して、検索数を取得します。
カスタムフィールドは簡単に言いますと、記事ごとに設定できる独自変数になります。
この変数に訪問されるたびに数字を追加して、アクセス数をカウントします。
まず、WordPressの管理画面の投稿一覧または新規追加からブログの編集画面を表示させます。
ただ、デフォルトではカスタムフィールドは表示されていません。
そこで、上部にある「表示オプション」をクリックします。

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

そして、「カスタムフィールド」がページ下部に表示されますので名前に「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