doudonn WEB制作やサーバーの話とかいろいろ

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

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

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

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

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

<?php
global $rireki;

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

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

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

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

//ある場合の処理
if($hanbetu == 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」の部分を修正ください。

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

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

<?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つの表示となります。

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

--

ワードプレスの関連記事

記事一覧はこちら:ワードプレス

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

<Twitterはこちら>
ゲーム垢
WEB制作垢
お知らせ

2022年11月30日に全記事削除しました。
まだ再開に向け作りかけ。


無駄にページ表示速度にこだわってます。

役立ちサイト
wiki
© 2022-2023 doudonn All Rights Reserved.