[wordpress]プラグインを使わずにアクセスランキングを作る方法

アクセスランキングを付けることになった。
なったけどどうにもプラグインだと気に入る構成にできるのがない。
調べたら作れた。

やろうとしたこと

デザインとか表示したい情報をこっちで好きに選べるアクセスランキングにしたい。

今回引っ張ってきたいやつ

  • パーマリンク
  • 記事タイトル
  • カテゴリー名
  • カテゴリースラッグ

参考

function.php

[php title=”function.php”]
//アクセス数の取得
function get_post_views( $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 views”;
}

return $count . ”;
}

//アクセス数の保存
function set_post_views( $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 );
}
}
[/php]
カウントの準備、カウントの保存のためにこれらを入れる。

アクセスランキング対象の記事ページ

[php title=”閲覧数カウント・表示”]
アクセス数:
[/php]
カウントのトリガーになるphp。
このままだと表示しちゃうので、表示したくなかったらechoを付けない。
ログインした状態の閲覧をカウントしたくなかったら↓にする。
[php title=”非ログインのみ”]
アクセス数:
[/php]

side.phpとか、ランキングを表示したいやつ

[php title=”ランキング表示”]

アクセスランキング

‘post’, //投稿タイプ
‘numberposts’ => 10, //表示数
‘meta_key’ => ‘post_views_count’,
‘orderby’ => ‘meta_value_num’,
‘order’ => ‘DESC’,
);
$posts = get_posts( $args );
if($posts) : ?>

コメント

  1. 大橋有理 より:

    お世話になります。

    現在WPでサイト構築中で、プラグインを使わずにランキングを設置したいと思い検索していたところ、こちらのページがヒットし拝見させていただきました。
    無事に設置でき、動いているのですがアクセス数がランキングに即反映されます。このアクセス数の集計に期間を設定することは可能でしょうか。

    例:1ヶ月間集計し、月が変わるタイミングでランキングに反映する
    (11月になったら、10月1日?10月31日の集計結果をランキングに)

    お教えいただけましたら幸いです。

    以上、よろしくお願いいたします。

    • megefeps より:

      コメントありがとうございます。
      結論から言えば、僕の手には負えない内容です。
      お力になれず申し訳ありません。

      今後僕が機能発展したランキングを設置しようと考えるなら、
      マンスリー、ウィークリー、デイリーなど指定ができるプラグインに頼ると思います。
      【例】https://ja.wordpress.org/plugins/wp-postviews/

      当記事は青天井のランキングを設定することがゴールでした。
      期間を反映させるとなると、
      ・日付別にアクセスカウント
      ・期間を指定してランキング作成
      あたりが必要となりますね。
      カスタムフィールドを使ってカウントしてますので、
      これを発展させるとめんどくさいことになるかもしれないです。
      記事の公開期間が長引くほどフィールドを増やす羽目になりので、
      違う方法を考えた方がいいかもです。

      プラグインを使わずに機能を設置するのは僕も好きなので、
      ぜひ頑張ってもらいたいです。

タイトルとURLをコピーしました