※現在リダイレクトにて新サイトへ移行中です
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つの表示となります。
もう少しスマートなやり方があると思いますが、
とりあえず動けばいいレベルで公開します。
コメント
-
1:名前:パルどう :
2018/12/03(月)
閲覧履歴を表示させるコードを、
クッキーがある場合ではなく、現在の記事以外の履歴がある場合に変更。
こうしないとクッキー無し→同じ記事を2回連続見る、で変数$rirekiがnullになり、
ワードプレスクエリーが全記事表示の指定になってしまう。 -
2:名前:パルどう :
2018/12/03(月)
「posts_per_page」は「5」など表示したい数値にするのが無難。
サンプルプログラムなので、「-1(全部表示=limit無し)」にしています。 -
3:名前:Berghilo :
2019/01/17(木)
こちらのページのプログラム使わせていただきました。
簡単に履歴をサイドバーに設置できました。
ありがとございます。
是非ご感想・ご指摘等をください。