コード・実装

【WordPress】カスタム投稿で最近チェックした閲覧履歴を表示(プラグインなし / PHP)

WordPress内にて、プラグインを使わずに、カスタム投稿の閲覧履歴を表示するプログラム方法忘備録。

 

PHPによる実装方法

header.phpの一番上に、cookieに登録のプログラムをおく

header.php

<?php
//閲覧履歴設定

global $rireki;

//記事ページのみcookieに登録
if (is_singular(‘【カスタム投稿スラッグ】’)) {

//閲覧履歴用の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) >= 4) {
$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’]);
}
}

<!– ここから通常のheader –>

<!doctype html>
<!– 以下略 –>

 

閲覧履歴一覧を表示部分

もし投稿詳細ページに閲覧履歴を表示したい場合、single.php

<?php
//閲覧履歴 表示

global $rireki;

//履歴が現在の記事を除いて、一つでもある場合
if (!empty($rireki)) :
?>
<ul>
<?php
$args = array(
'post_type' => '【カスタム投稿タイプスラッグ】',
'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(); ?>

<!-- loop start -->
<li>
<a href="<?php echo get_permalink(); ?>">
<figure>
<?php echo get_the_post_thumbnail(); ?>
</figure>
<div>
<h3>
<?php echo get_the_title(); ?>
</h3>
</div>
</a>
</li>
<!-- loop end -->
<?php
endwhile;
endif;
wp_reset_postdata(); ?>
</ul>
<?php
else: //cookieが無い場合の処理?>

<?php endif; ?>

閲覧ありがとうございました!

ABOUT ME
WEBクリ開発者
当ブログでは主にWeb制作・HTML・ CSS・SCSS・JavaScript・jQuery・Vue.js・Wordpress・個人開発情報の情報を発信。 WEBデザイナー・コーダー・プログラマー向けのサイトです。 また、個人開発のサービスやアプリのお知らせもさせていただいています。