以前、違うケースでの回答ですが
多分、これで大丈夫だと思います。
私も、よく使っています。
https://ja.forums.wordpress.org/topic/152825
functions.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 = 1;
delete_post_meta( $postID, $count_key );
add_post_meta( $postID, $count_key, '0' );
} else {
$count ++;
update_post_meta( $postID, $count_key, $count );
}
}
header.phpに記入
(このソースがあるページのみ集計します。)
<?php set_post_views( get_the_ID() );//アクセス数を取得 ?>
書き込みたい場所に記入します。
(サイドバーやインクルードなどPHPが使用できる場所ならOKです)
<div>
<h3 class="headline2">ランキング</h3>
<ul>
<?php
$args = array(
'numberposts' => 6, //'posts_per_page' = 6> ,
'post_type' => array('post','page','カスタムポスト'), //投稿タイプの指定
'meta_key' => 'post_views_count',//ここでアクセスカウントを抽出
'orderby' => 'meta_value_num',//アクセス数の多い順
'post_status' => 'publish',//公開した記事のみ
'has_password' => false,//false or trueパスワードがかかってれば除外
//'cat' => -1,//カテゴリーの設定
);
$customPosts = get_posts($args);
foreach($customPosts as $post) : setup_postdata( $post );
?>
<li>
<a class="image" href="<?php the_permalink() ?>">
<?php if ( has_post_thumbnail()) { the_post_thumbnail('full'); } else { echo '<img src="'; bloginfo('template_url'); echo '/img/common/no_image1.gif" alt="" title="" />'; }; ?></a>
<h4 class="title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
</li>
<?php endforeach; //表示の抽出終了 ?>
<?php wp_reset_query(); //データリセット ?>
</ul>
</div>
仕組み的には、metaを使ってカスタムフィールドにアクセスした度に、1づつ加算し
それをforeachで並び替えを行う感じです。
以前、カテゴリー版を組んだのですが、苦労した割に微妙でした。
私もプラグインを使わない方法で人気ページをランキングしたいと思っていました。
実装したところ問題なく表示されプラグインを使っていた時よりも軽くなった印象です。
良い点は多いのですが、この方法だと過去全てのアクセス数によるランキングとなりますよね?
これだと新規投稿が不利=古いランキングとなりそうなので、週刊でのアクセス数で集計としたいと思います。
週刊・月刊は、サイトによってベストは変わると思いますが
限定した期間でのアクセスランキングが出来ればと思います。
また、上記の限定した期間でのアクセス数も表示出来れば、嬉しいです。
横から入って申し訳ありませんが、ご教授願いたいです。
よろしくお願い致します。
papasuさん
そうなんですよね。
delete_post_metaを使えば、定期的なリセットはかのうな気がするんですが
いまいち、理想形ができなくて
うまくカステムできてないんですよ。すみません。
多分ですが,metaを使ってるので
$count ++;
update_post_meta( $postID, $count_key, $count );
この辺に、日付の関数をかませばできそうなきがするのですが
今度、時間見つけて考えてみますの。
ご回答、どなたかご紹介頂けると非常に嬉しいです。
mura0403様
ありがとうございます。
お時間のある時に考えて頂ければ、嬉しいです。
当面は、データベース操作で「post_views_count」の数値を一定期間でリセットする方法で運用します。