WordPress 高亮顯示用戶上次訪問後新增的迴響內容

如果一個用戶對你的文章很感興趣,他很可能會關註你文章的迴響內容,那麼我們如何讓用戶知道哪些迴響內容是他上次訪問後新增的呢,今天推薦的 Comments Since Last Visit 就可以做到這一點。

Comments Since Last Visit 是通過 Cookie 記錄用戶最後訪問每篇文章的時間,然後對這個時間後的新增迴響添加一個 CSS 類 及 對應的高亮樣式。這樣,用戶下次過來(當然是同一個瀏覽器,沒有清空 Cookie 的情況下),就可以很明顯看到新增的迴響內容瞭。

comments-since-last-visit_wpdaxue_com

你可以到作者部落格下載該外掛,或者下載本站備份

如果你不想弄外掛,也可以試試根據外掛源碼整理出來的代碼(未測試,歡迎反饋),添加到主題的 functions.php 即可:

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
39
40
41
42
43
44
45
46
47
48
49
50
/**
 * WordPress 高亮顯示用戶上次訪問後新增的迴響內容
 * https://www.wpdaxue.com/comments-since-last-visit.html
 */
add_action( 'get_header', 'wpdx_last_visit_cookie' );
function wpdx_last_visit_cookie()
{
	// 隻對文章和頁面這類頁面生效
	if ( is_singular() )
	{
		// 獲取當前文章的ID
		$id = get_the_ID();
		// 獲取當前時間
		$current_time = strtotime( current_time( 'mysql' ) );
		// 查看是否 cookie 已經存在,如果是,獲取 last_visit
		if ( isset( $_COOKIE['last_visit'] ) )
		{
			$latest_visit = json_decode( stripslashes( $_COOKIE['last_visit'] ), true );
			// 隻保留最後 50 篇文章,防止cookie過大
			if ( count( $latest_visit ) >= 50 )
			{
				$latest_visit = array_diff( $latest_visit, array( min( $latest_visit ) ) );
			}
		}
		// 隻保留這篇文章的 cookie 90天
		$latest_visit[$id] = $current_time;
		setcookie( 'last_visit', json_encode( $latest_visit ), time()+3600*2160 );
	}
}
add_filter( 'comment_class', 'wpdx_last_visit_comment_class' );
function wpdx_last_visit_comment_class( $classes )
{
	// 獲取迴響的時間
	$comment_time = strtotime( get_comment_date( 'Y-m-d G:i:s' ) );
	if ( isset( $_COOKIE['last_visit'] ) ) {
		$latest_visit = json_decode( stripslashes( $_COOKIE['last_visit']), true );
	}
	// 如果迴響是用戶上次訪問之後新增的,就添加 new-comment 這個類
	if ( $comment_time > $latest_visit[get_the_ID()] )
	{
		$classes[] = 'new-comment';
	}
	return $classes;
}
// 添加高亮樣式
add_action( 'wp_enqueue_scripts', 'wpdx_last_visit_styles' );
function wpdx_last_visit_styles()
{
	echo '<style>.new-comment { background-color: #f0f8ff; }</style>';
}

/**
* WordPress 高亮顯示用戶上次訪問後新增的迴響內容
* https://www.wpdaxue.com/comments-since-last-visit.html
*/
add_action( ‘get_header’, ‘wpdx_last_visit_cookie’ );
function wpdx_last_visit_cookie()
{
// 隻對文章和頁面這類頁面生效
if ( is_singular() )
{
// 獲取當前文章的ID
$id = get_the_ID();
// 獲取當前時間
$current_time = strtotime( current_time( ‘mysql’ ) );
// 查看是否 cookie 已經存在,如果是,獲取 last_visit
if ( isset( $_COOKIE[‘last_visit’] ) )
{
$latest_visit = json_decode( stripslashes( $_COOKIE[‘last_visit’] ), true );
// 隻保留最後 50 篇文章,防止cookie過大
if ( count( $latest_visit ) >= 50 )
{
$latest_visit = array_diff( $latest_visit, array( min( $latest_visit ) ) );
}
}
// 隻保留這篇文章的 cookie 90天
$latest_visit[$id] = $current_time;
setcookie( ‘last_visit’, json_encode( $latest_visit ), time()+3600*2160 );
}
}
add_filter( ‘comment_class’, ‘wpdx_last_visit_comment_class’ );
function wpdx_last_visit_comment_class( $classes )
{
// 獲取迴響的時間
$comment_time = strtotime( get_comment_date( ‘Y-m-d G:i:s’ ) );
if ( isset( $_COOKIE[‘last_visit’] ) ) {
$latest_visit = json_decode( stripslashes( $_COOKIE[‘last_visit’]), true );
}
// 如果迴響是用戶上次訪問之後新增的,就添加 new-comment 這個類
if ( $comment_time > $latest_visit[get_the_ID()] )
{
$classes[] = ‘new-comment’;
}
return $classes;
}
// 添加高亮樣式
add_action( ‘wp_enqueue_scripts’, ‘wpdx_last_visit_styles’ );
function wpdx_last_visit_styles()
{
echo ‘<style>.new-comment { background-color: #f0f8ff; }</style>’;
}

發佈留言