プラグインPostViewsのインストールと使用法

投稿日: 2009年3月6日 | カテゴリ:『ワードプレス』>プラグイン

WordPressのプラグインwp-postviewsは、アクセスの多い(あるいは少ない)順に記事を整理して表示してくれるプラグインです。どのようなタイプの記事が人気があるかを知ることができ、記事を作成する際にも参考になります。使用方法については、このプラグインの作者のサイトで説明されていますが、不十分な点があるので、これまでの私の経験も踏まえてもうすこし詳しく説明いたします。

目次

1. インストール
2. 設定
3. 挿入タグの一般的記述方法
4. 具体的使用例
A. 記事の特定の箇所にアクセス回数を表示する
B. サイドバーに表示する
C. ページに表形式で表示する例
D. カテゴリー別に表示する
5. アクセス・カウントのリセットまたは消去
6. キャッシュ・プラグインとの併用

次のサイトにアクセスし、解凍後、wp-postviewsフォルダーごとpluginディレクトリにアップロードしてください。
PostViews
adminでログインしてプラグインのページにアクセスし、「使用する」を選択しプラグインを有効にします。WP-PostViewsとWP-PostViews Widgetの2つがありますので使用目的に応じて選択してください。ここでは前者を選択したものとして話を進めます。Widgetについては後で説明いたします。

プラグインを有効にすると、「設定」セクションにPostViewsの項目が表示されますのでこれを選択してこのページにアクセスします。
以下では、本家のUsage(英語)を参考にしながら、一部加筆して、オプションの設定方法を説明いたします。

Count Views From:
どのユーザーのアクセスをカウントするかを設定します。次のオプションが選択可能です。

  • Everyone:全てのユーザーのアクセスがカウントされます。
  • Guest Only:管理者、登録ユーザーを除く一般ユーザーのアクセスだけがカウントされます。adminでログインして、記事の編集・閲覧を行った場合にはカウントされませんが、ログアウトして通常のユーザーでアクセスするとカウントされますので注意してください。
  • Registered Users Only:サイトに登録されているユーザーのアクセスだけがカウントされます。

Exclude Bot Views:
ロボット・クローラー(検索エンジン)のアクセスのカウントを排除するかどうかの設定です。通常Yes(カウントしない)にします。

Views Template:
特定の記事の適当な部分にその記事のアクセス・カウント数を1行表示するためのテンプレートです。
デフォルトのテンプレートでは、カウントの表示が「10 views」のようになってしまうので、以下のように変更して、「10 回」のように表示させます。
%VIEW_COUNT% 回
テンプレートを変更したら、「Save Change」(末尾部分にある)ボタンを押して変更を反映させます。変数は、%VIEW_COUNT%(アクセス回数)が使用できます。
「Restore Default Template」はデフォルトのオプションを回復させるボタンです。

Most Viewed Template:
記事の人気ランキングを記事数を指定して箇条書き方式で表示させる場合のテンプレートです。
デフォルトのテンプレートを以下のように改良します。これは本サイトでの設定ですので、ユーザーの好みに応じて書き換えてください。閲覧の便宜上、途中で改行してあります。この設定は、ランキングを表示させる他の関数にも適用されます。

<li><a href="%POST_URL%"  title="">%POST_TITLE%</a>
 - <span style="color:#FF0000">%VIEW_COUNT% 件</span></li>

アクセス件数の「views」を「件」に変更し、表示を赤字にしています。このようにHTMLタグを挿入し、自分に合った表示方法をカスタマイズすることができます。変数は、%VIEW_COUNT%(カウント数)、%POST_TITLE%(記事のタイトル)、%POST_EXCERPT%(記事の抜粋を表示)、%POST_CONTENT%(記事の内容を表示)、%POST_URL%(記事のURL)が使用できます。

テンプレートを変更したら、「Save Change」ボタンを押して変更を反映させます。

Display Options
各ページに設定されている表示関数を許可する対象を指定します。これらのページにpostviewsのスクリプトの記述がある場合にだけ意味をもちます。

  • Display to everybody:全てのアクセス者に許可
  • Display to registered users only:登録ユーザーのみに許可
  • Don’t dispay on page:このページに設定してある関数は表示されません。

デフォルトの設定(Display to everybody)で支障はないと思います。

特定の記事にその記事のアクセス数を表示させるには、次のタグをテンプレート・ファイル(single.php, post.php, page.phpなど)の適当な箇所に挿入します。

<?php if(function_exists('the_views')) { the_views(); } ?> 
</pre>
記事のアクセス数をランク方式で複数表示させるには、次のタグをサイドバーなどの適当な部分に挿入します。
<pre lang="php" line="1" file="itemized-access-ranking">
<?php if (function_exists('get_most_viewed')): ?>
   <ul>
      <?php get_most_viewed(post,10); ?>
   </ul>
<?php endif; ?> 

1行目と5行目はプラグインが何かの理由で無効になった際に、プラグインの関数を無効にして他の表示に影響を与えないようにする安全装置です。おまじないのようなものと考えてください。もちろんこのタグを挿入しなくてもプラグインは問題なく機能します。
3行目は、アクセスの多い順に記事を表示するための本体の関数です。1番目の引数には、both(ページと記事の両方をカウントに含める)、post(記事のみ含める)またはpage(ページのみ含める)が選択できます。二番目の引数には表示したい記事数を算用数字で指定します。箇条書き<ul>を<ol>に変更すれば連番号表示となります。

使用できる関数には次の4つがあります。テンプレートはMost Viewed Template:で設定した内容が反映されます。

  • get_least_viewed(); - アクセスの少ない順に記事を表示します。最初の引数は、含める記事のタイプ(both, post, page)、2番目の引数は、表示したい記事数を指定します。
    例:get_least_viewed(both,50);

  • get_most_viewed(); - アクセスの多い順に記事を表示します。最初の引数は、含める記事のタイプ(both, post, page)、2番目の引数は、表示したい記事数を指定します。
    例:get_most_viewed(post,100);

  • get_least_viewed_category(); - 各カテゴリーについてアクセスの少ない順に記事を表示します。最初の引数は、カテゴリーID、2番目の引数は、含める記事の種類(both, post, page)、3番目の引数は、表示したい記事数を指定します。
    例:get_least_viewed_category(30,’both’,20);

  • get_most_viewed_category(); - 各カテゴリーについてアクセスの多い順に記事を表示します。最初の引数は、カテゴリーID、2番目の引数は、含める記事の種類(both, post, page)、3番目の引数は、表示したい記事数を指定します。
    例:get_most_viewed_category(30,’both’,20);

次に幾つかの具体的使用例を示しますので、参考にしてください。

A. 記事の特定の箇所にアクセス回数を表示する
次の例は、本サイトのsingle.phpファイル内の記事info部分の最後の行に挿入したものです。本サイトの記入例ですので、各自のサイトの特殊性に踏まえて挿入する位置を調整してください。

<div class="post_info">
<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
<?php the_title(); ?></a></h1>
<span class="author">投稿者:<?php the_author_posts_link(); ?>&nbsp;
<?php edit_post_link(__(' Edit'), '|', ''); ?></span>
<span class="category">分類:<?php the_category('>> ') ?></span>
<span class="postdate">投稿日:<?php the_time('Y年');the_time('n月');the_time('j日'); ?>
|更新日:<?php the_modified_date('Y年n月j日') ?></span></BR>
<span class="postdate">アクセス回数:<?php if(function_exists('the_views')) { the_views(); } ?>
 (3月1日以降)</span></BR>
</div>
</div>

9行目と10行目がこのプラグインのカウントの表示指定です。
表示例

B. サイドバーに表示する

<div class="div_wrap_sidebar">
<div class="top_sidebar"></div>
<h3>人気記事ベスト10</h3>
<div style="font-size:12px;padding:25px 0 0px 85px">2009年3月1日以降</div>
<?php if (function_exists('get_most_viewed')): ?>
   <ul>
      <?php get_most_viewed(post,10); ?>
   </ul>
<?php endif; ?> 
<div class="bottom_sidebar"></div>
</div>

5行目から9行目がこのプラグインに特殊な設定です。アクセスの多い順に10件を表示する設定です。残りの部分は、本サイトに特殊な設定ですので、各自のサイトにあわせて書き直してください。

サイドバーにはウィジットを使用しても挿入できます。但し、この場合、サイドバーが全てWidget仕様になりますので注意してください。
adminでログインして、プラグイン・ページでWP-PostViews Widgetを「使用する」にします。
「概観」タブ-「ウィジット」を選択し、ウィジットのページに移動します。
「Most Viewed」表示の右にある「追加」ボタンをクリックします。
右側に「Most Viewed」のバーが現れるので編集をクリックして各設定を行います。

wigit

上の図は1つの設定例です。適当に変更して「完了」ボタンを押してください。

C. ページに表形式で表示する例
次にページを使用して表形式で表示する例を示しておきます。この例は、他のプラグインrunPHP(記事「プラグインrunPHPのインストール」とその関連記事を参照)を必要とし、サイドバーなどの限られた部分には不適切ですのでページのみでの使用に限定してください。
まず、「Most Viewed Template:」(PostViewsの設定画面にあります)の内容を以下のように変更します(見やすいように途中で改行してあります。実際は一続きのスクリプトです)。変更したら必ず「Save Changes」ボタンをクリックして内容を保存してください。

<tr><td width="450">
<span style="padding-left:10px">
<a href="%POST_URL%"  title="" >%POST_TITLE%</a>
</span>
</td><td width="100">
<span style="color:#FF0000;padding-left:10px">%VIEW_COUNT% 回</span>
</td></tr>

3行目:記事のタイトルを表示する部分です。
6行目:アクセス回数を表示する部分です。
残りの部分は表形式で表示させるHTMLタグです。

ランキングを表示させるページのrunPHPを有効にし、次のようなスクリプトを挿入します。

 <div style="font-size:20px;font-weight:bold;color:#0000FF;padding:10px 0 10px 150px;">
アクセス・ランキング(ベスト100)</div>
<div style="font-size:14px;font-weight:normal;color:#000000;padding:0px 0 10px 450px;">
2009年2月20日以降</div>
<table border="1" cellspacing="0">
<tr><td width="450">
<span style="font-weight:bold;padding-left:10px">記事タイトル</span>
</td><td width="100"><strong>アクセス回数</strong></td></tr>
<?php 
if (function_exists('get_most_viewed')){
get_most_viewed(both,100); 
} 
?>
</table> 

表示例

D. カテゴリー別に表示する
関数get_most_viewed_category();を使用するとカテゴリー別に人気ランキングを表示することができます。最初の引数にはカテゴリーID、2番目の引数には含める記事の種類(both, post, page)、3番目の引数には表示したい記事数をそれぞれ指定します。
アクセスが多いサイトでは、アクセス数を整理して表示できるので便利なツールだと思います。以下の例は、ページとプラグインrunPHPを使用して表示する例を示しています。

<div style="font-size:14px;font-weight:normal;color:#000000;padding:0px 0 0px 450px;">
2009年3月1日以降</div>
<div style="font-size:16px;font-weight:bold;color:#000000;padding:20px 0 0px 0px;">
Wordpress</div>
<ol>
<?php 
if (function_exists('get_most_viewed_category')){
get_most_viewed_category(30,'post',10); 
} 
?>
</ol> 
<div style="font-size:16px;font-weight:bold;color:#000000;padding:20px 0 0px 0px;">
自宅サーバー</div>
<ol>
<?php 
if (function_exists('get_most_viewed_category')){
get_most_viewed_category(10,'post',10); 
} 
?>
</ol> 
</ol> 
<div style="font-size:16px;font-weight:bold;color:#000000;padding:20px 0 0px 0px;">
登山日記</div>
<ol>
<?php 
if (function_exists('get_most_viewed_category')){
get_most_viewed_category(11,'post',10); 
} 
?>
</ol> 

表示例

以上の設定が済めば、プラグインが自動的に記事のアクセス数をmysqlに保存してそのカウント数をユーザーの設定に基づいて表示してくれます。しかし、時間が経つにつれてアクセス数が増加し、そのカウントをリセットしたい場合も生じてくると思います。あるいは、月毎(or年毎)に集計したい場合などにもこのリセットの操作が必要になってきます。次に、このリセットの仕方について説明いたします。このプラグインのデータは mysql のwp_postmetaに保存されています。

WordPressの内部で微調整する
Wordpress2.7 以降(?)では、mysqlのフィールドを表示しそれを変更できるようになりました。
アクセス数を調整したい記事の編集を選択すれば本文編集ウィンドウの下部に以下のようなバーがありますのでそれを開きます。

views_modify

その値を変更して「更新」ボタンを押してください。変更が反映されます。管理者のアクセスが何らかの原因でカウントされてしまった場合には、この方法で簡単に調整できます。タイトルごとリセットしたい場合には「削除」ボタンを押してください。

Mysqlで全てのviewsをリセットする
記事が少なければ上記の方法でも全カウントをリセットすることができますが、ランク記事の数が多い場合には大変な労力が必要になります。この場合には、mysqlのコマンドを使用して一括処理します。
サーバーの端末にログインし、端末で以下のようなコマンドを発行して操作を行います。mysqlのユーザーをuser、データベース名をwordpressとして説明いたします。この操作を行う前に、安全のためにmysqlデータベースのバックアップを行っておいてください。バックアップの方法については、次の記事を参照してください。

//mysqlにユーザー名を指定してログインする。
[user@localhost ~]# mysql -u user -p
//パスワード入力。
Enter password:
//使用するデータベースを指定します。この指定がないと以下のコマンドで
//「ERROR 1046 (3D000): No database selected」というエラーが出ます。
mysql> use wordpress;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
//アクセス数だけを0にリセットするコマンド。記事のタイトルは残ります。
mysql> UPDATE wp_postmeta SET meta_value=0 WHERE meta_key=”views”;
Query OK, 66 rows affected (0.00 sec)
Rows matched: 66 Changed: 66 Warnings: 0
//記事のタイトルとアクセス数を全てリセットします。
mysql> Delete from wp_postmeta WHERE meta_key=”views”;
Query OK, 66 rows affected (0.07 sec)

mysql> quit
Bye
[user@localhost ~]#

値のみをリセットした場合には、過去のランク記事のタイトルはそのまま残り、そのカウント数だけが0となります。その後、記事のアクセス数によってカウント数と表示位置が変更されていきます。
全リセットの場合にはアクセスがあるまで、N/Aが表示されます。

phpmyadminを使用してリセットする方法
phpmyadminがサーバーにインストールされていてユーザーが使用可能になっていることを前提にします。操作を行う前にデータベースのバックアップを忘れないようにしてください。

  1. rootまたは当該userでログインします。
  2. 左側のウィンドウで、目的のデータベース(例えば、wordpress)を選択します。
  3. 左側のウィンドウで、wp_postmetaを選択します。
  4. 右側ウィンドウで、「検索」タブを選択します。
  5. meta_keyの右にあるウィンドウに「views」を入力し、「実行する」をクリックします。
  6. 「views」の全てが表示されるのでその全てにチェックを付けます。
  7. 右下にある削除ボタン(×印)を押します。
  8. 「本当に削除しますか」ときかれますので、下にある「はい」ボタンを押します。
  9. 削除された旨の結果が表示されます。

表示速度を増すために利用するキャッシュ・プラグインとPostviewsを併用した場合、Postviewsプラグイン自体はアクセス数をリアルタイムでカウントしてMysqlデータベースに保存しますが、実際の表示は、キャッシュ・ページにキャッシュ時に保存されたカウントが表示されてしまいます。以下に、Super Cacheプラグインと併用した場合を例に、対処方法を提示しておきますので参考にしてください。

A. ページにアクセス・ランキングを表示する場合
当該ページのキャッシュを無効にすることによってカウントがリアルタイムで反映されるようにします。ダッシュボードの「設定」->「WP Super Cache」を開き、「詳細」タブを選択します。
「ここにキャッシュしないようにするページの文字列 (ファイル名ではなく) を追加します。...」の表示の下にあるボックスに当該ページのURLに含まれている文字列を記入します。例えば、URLがhttp://hsuzuki.ddo.jp/weblog/access_rankingの場合にはaccess_rankingの文字列を挿入します。

B. 記事の特定部分にアクセス回数を表示する場合
Super Cacheを使用する場合、Cache Timeoutを調節することによって回数の更新もこの設定時間内に行われます。しかし、Super Cacheのプリモード設定を有効にしている場合には、頻繁にスーパー・キャッシュをリフレッシュしないと、正確なアクセス回数をポストに反映させることはできません。これを解決するためには、Ajax_the_viewsというプラグインを導入します。このプラグインは、スーパー・キャッシュされた記事が表示されるときに回数表示部分を最新の回数に書き換えてくれます(書き換え中に一瞬ですが「Please wait」と表示されます)。

[追記]
  1. 2012年5月23日にプラグインwp-postviewsの自動アップグレード(1.40→1.61)を行ったところ、アクセス記事のカウントが更新されなくなる、という不具合が発生しました。旧バージョン(1.40)に戻したところ問題なく動作していますので、新バージョンに問題があると思います(原因究明中)。同じ現象に行き当たったユーザーはさしあたり旧バージョン(1.40)に戻してください。(2012年6月1日)
  2. 当サイトでは、バージョン1.60が正常に動作することを確認しています。 以下のサイトで入手可能です。(2013年6月20日)
    http://wordpress.org/support/topic/plugin-wp-postviews-back-to-version-160

  3. 本体の不具合については不十分ながら一応の解決法を見つけました。下記の関連記事を参照してください。(2013年7月20日)
  4. Ver. 1.67では、上記(1)、(2)の問題は解決されたようです。また、キャッシング・プログラムに対応する機能が本体にビルトインされたので、6.Bのプラグインの適用は不要になりました。(2014年5月20日)
    関連記事:WP-Postviewのバージョン1.67がリリースされました

関連記事



プラグインPostViewsのインストールと使用法” への6件のコメント

  1. はじめまして、古い記事に質問なんですが
    駄目でしたらスルーか削除してください
    ページに表形式で表示する例についてですが
    table-type-display_template_setting
    table-type-display_page_settingの二つがありますが
    table-type-display_template_settingは
    page.phpをpage_ranking.phpとでも変えてtable-type-display_template_settingをループを変更でよろしいのでしょうか?
    table-type-display_page_settingにつきましては理解できました。
    よろしくお願いします

    • JUPITERさんへ
      table-type-display_template_settingの設定場所についてちょっと誤解があるようです。
      この設定部分は、「設定」ウィンドウ(adminでログインした後に左側に現れる)にある「PostViews」の「Most Viewed Template:」の枠内に設定する内容です。
      この内容が
      table-type-display_page_settingの関数「get_most_viewed(both,100);」においてループされます。
      初めて閲覧される方には、table-type-display_template_setting 表題の説明が不十分だったかもしれません。
      この点については説明を解かりやすく書き直してみました。

  2. ピンバック: WordPressのサイドバーに人気記事を表示させるプラグイン | ウェブという選択肢

  3. ピンバック: WordPress(ワードプレス)プラグイン-WP-PostViewsの導入方法 | デザイナーブログ | 株式会社LIG

  4. ピンバック: Mysqlでの人気記事のエントリー数を修正する | taka's趣味の部屋

  5. ピンバック: WordPress(ワードプレス)プラグイン-WP-PostViewsの導入方法 | 株式会社LIG

JUPITER@くん にコメントする コメントをキャンセル