welacartで閲覧履歴を実装する
現在、新型コロナウイルスの影響でテレワークをしております。
会社からパソコンを自宅に移動してもらい、VPNをつないで環境を整えていただき、在宅にてお仕事しておりますが、会社で仕事するのと変わらない業務を行えている事に感謝です。
快適です。
在宅勤務のお昼ご飯事情ですが、私は自炊しております。
しかし、時間的にも精神的にもしんどいなと思うときは、レトルトの食品など活用して、うまく付き合っていくことが大切です🍚
最近美味しかったのは冷凍の汁なしタンタンメンです。
さて、welacartのお話。
ECサイトを見ていて、『どれも素敵だなー♡』と商品をいろいろ見ていて、『やっぱりさっきの商品気になる』となった時に、閲覧履歴があると便利ですよね。
その実装方法です。
プラグインでもあると思うのですが、今回はプラグインなしで実装する方法です。
プラグイン無しでワードプレスに閲覧履歴を表示させる方法(cookie使用サンプル)
上記サイト様を参考にさせていただきました。ありがとうございます。
記事の一覧履歴をcookieを使って取得してきて表示する方法を応用して、welacartでは登録商品には”商品”というカテゴリがつくので、商品カテゴリだけ履歴をだすようにすればいいということになります。
下記PHPコードを<head>内に入れます。
in_category(‘2’)で、カテゴリID2(商品)を指定して、$rirekiに商品カテゴリのcookieが存在する場合と指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<?php global $rireki; //記事ページのみcookieに登録 if(in_category('2')){//商品カテゴリのカテゴリID"2"を指定 //閲覧履歴用の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-&gt;ID)); $rireki = array_values($rireki); } //cookieが5個以上ある場合、4個に減らす if(count($rireki) &gt;= 5 ){ $set_rireki = array_slice($rireki , 0, 4); }else{ $set_rireki = $rireki; } //cookieに登録 $touroku = $post-&gt;ID.','.implode(",", $set_rireki); setcookie( 'rireki', $touroku, time() + 7776000,'/'); //cookieに現在の記事IDが無い場合の処理 }else{ $touroku = $post-&gt;ID; setcookie( 'rireki', $touroku, time() + 7776000,'/'); } //記事ページ以外ならcookieの読み込みのみ }else{ if( isset($_COOKIE['rireki']) ){ $rireki = explode(",", $_COOKIE['rireki']); } } ?> |
閲覧履歴を表示したいphpファイルの中に下記phpコードを入れます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php global $rireki; //履歴が現在の記事を除いて、一つでもある場合 if (!empty($rireki)){ $args = array( 'posts_per_page' => 5, 'post__in' => $rireki, 'orderby' => 'post__in', 'category' => '2', ); $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 } ?> |
welcartでの閲覧履歴の実装に困ったら一度お試しください。