parudou
parudou
parudou
更新日:2018/12/03

プラグイン無しでワードプレスに閲覧履歴を表示させる方法(cookie使用サンプル)

閲覧履歴を表示させる場合、プラグインを使うのが簡単です。
ただやはり、カスタマイズ性はやはり自作が最高。
cookieを使ったやり方を紹介します。

閲覧履歴用cookie登録プログラム

次のコードを「<head>」のすぐ下に入れます。
それより下だと、ワードプレスの仕様と干渉しエラーになる。


<?php
global $rireki;

//記事ページのみcookieに登録
if(is_single()){

//閲覧履歴用のcookieが存在する場合
if( isset($_COOKIE['rireki']) ){

//配列にする
$rireki = explode(",", $_COOKIE['rireki']);

//cookieに現在の記事IDがあるかどうか調べる
$aruno = in_array($post->ID, $rireki);

//ある場合の処理
if($aruno == true){

//cookieにある現在の記事IDを削除(順番整理&表示除外用)
$rireki = array_diff($rireki,array($post->ID));
$rireki = array_values($rireki);
}

//cookieが5個以上ある場合、4個に減らす
if(count($rireki) >= 5 ){
$set_rireki = array_slice($rireki , 0, 4);
}else{
$set_rireki = $rireki;
}
//cookieに登録
$touroku = $post->ID.','.implode(",", $set_rireki);
setcookie( 'rireki', $touroku, time() + 7776000,'/');

//cookieに現在の記事IDが無い場合の処理
}else{
$touroku = $post->ID;
setcookie( 'rireki', $touroku, time() + 7776000,'/');
}

//記事ページ以外ならcookieの読み込みのみ
}else{
if( isset($_COOKIE['rireki']) ){
$rireki = explode(",", $_COOKIE['rireki']);
}
}
?>

閲覧履歴を5個表示、有効期限は3か月としています。
変更したい場合「setcookie」の部分を修正ください。

閲覧履歴を表示させる方法

表示させたい箇所に、次のコードを入れます。
自分のサイトに合わせて変更ください。


<?php
global $rireki;
//履歴が現在の記事を除いて、一つでもある場合
if (!empty($rireki)){

$args = array(
'posts_per_page' => -1,
'post__in' => $rireki,
'orderby' => 'post__in',
);
$the_query = new WP_Query($args);

if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
?>

<!--ここに記事を表示させる処理-->

<?php
endwhile;
endif;
wp_reset_postdata();
}else{ ?>
//cookieが無い場合の処理
<?php } ?>

これにて閲覧履歴の表示ができます。
サンプルは当サイトのサイドバーにある閲覧履歴を見てください。

現在の記事は閲覧履歴に表示されません。
そのため、直近5回以内の記事を表示させた場合、4つの表示となります。

もう少しスマートなやり方があると思いますが、
とりあえず動けばいいレベルで公開します。

コメント

是非ご感想・ご指摘等をください。

プロフィール

管理人:parudou
単なるWEBサイト作成マニアです。
底辺法人アフィリエイター。
Twitterはこちら

日記はパルどうSEOブログ

閲覧履歴
履歴なし
カテゴリー
Copyright (c) parudou All Rights Reserved.