プラグインを使用せずに人気記事一覧を作成したい
-
プラグインを使用せずに”更新ボタンの連打はカウントから除外した”人気記事一覧を作成したいと思っています。
「プラグイン無しで記事のアクセス数をカウントする関数と、アクセスランキングの表示を行うスニペット」
https://increment-log.com/wordpress-access-count/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 = 0; delete_post_meta( $postID, $count_key ); add_post_meta( $postID, $count_key, '0' ); } else { $count ++; update_post_meta( $postID, $count_key, $count ); } }
アクセス数表示箇所
アクセス数: <?php echo get_post_views( get_the_ID() ); set_post_views( get_the_ID() ); ?>
ランキング表示箇所
<h3>アクセスランキング</h3> <?php $args = array( 'post_type' => 'post', //投稿タイプ 'numberposts' => 5, //表示数 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', ); $posts = get_posts( $args ); if($posts) : ?> <ul> <?php foreach( $posts as $post ) : setup_postdata( $post ); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'thumbnail' ); ?></a> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php endforeach; ?> <?php wp_reset_postdata(); ?> </ul> <?php else : ?> <p>アクセスランキングはまだ集計されていません。</p> <?php endif; ?>
の通りに追記したらアクセスランキング自体は簡単に実装できたのですが、これだと更新ボタン連打でもカウントできてしまいます。
ここに
$_SESSION["visited"];
を組み合わせれば何とかなるんじゃないかと思い、
「WordPressでセッションが保存されない時はfunctions.phpにごにょごにょ」
//http://techtabosque.tumblr.com/post/126559949723/WordPressでセッションが保存されない時はfunctions.phpにごにょごにょ
の通りにfunction init_sessions() { if (!session_id()) { session_start(); } } add_action('init','init_sessions');
をfunctions.phpに書くところまで行けたのですが、そこから先へ進めていない状態です。
セッションのカウントが1のとき以外はカウント機能自体を動かさないなどの処置でうまくいきそうな気がしたんですが…どう記述すればいいでしょうか?
それともこのやり方では無理でしょうか?
4件の返信を表示中 - 1 - 4件目 (全4件中)
4件の返信を表示中 - 1 - 4件目 (全4件中)
- トピック「プラグインを使用せずに人気記事一覧を作成したい」には新たに返信することはできません。