WordPress 网站显示用户搜索历史记录
要在 WordPress 网站显示用户搜索历史记录,可按以下步骤操作:
你需要在用户每次进行搜索时记录相关信息。可以通过在主题的
收起
php
上述代码的作用是,当用户进行搜索时(通过
为了方便在页面或文章中显示搜索历史,你可以创建一个短代码。继续在
收起
php
此代码定义了一个名为
在 WordPress 后台编辑页面或文章时,只需在编辑器中输入
收起
php
通过以上步骤,你就可以在 WordPress 网站上显示用户的搜索历史记录了。
1. 记录搜索历史
你需要在用户每次进行搜索时记录相关信息。可以通过在主题的
functions.php
文件中添加代码来实现这一功能。收起
php
// 记录搜索历史到用户元数据
function record_search_history() {
if ( is_search() ) {
$search_query = get_search_query();
$user_id = get_current_user_id();
if ( $user_id ) {
$search_history = get_user_meta( $user_id, 'search_history', true );
if ( ! $search_history ) {
$search_history = array();
}
array_push( $search_history, $search_query );
update_user_meta( $user_id, 'search_history', $search_history );
}
}
}
add_action( 'template_redirect', 'record_search_history' );
上述代码的作用是,当用户进行搜索时(通过
is_search()
函数判断),获取搜索关键词和当前用户的 ID。如果用户已登录($user_id
不为空),则获取该用户之前的搜索历史记录(存储在用户元数据中),将当前搜索关键词添加到历史记录数组里,最后更新用户的搜索历史记录。
2. 创建显示搜索历史的短代码
为了方便在页面或文章中显示搜索历史,你可以创建一个短代码。继续在
functions.php
文件中添加以下代码:收起
php
// 创建短代码来显示搜索历史
function display_search_history_shortcode() {
$user_id = get_current_user_id();
if ( $user_id ) {
$search_history = get_user_meta( $user_id, 'search_history', true );
if ( $search_history && is_array( $search_history ) ) {
$output = '<ul>';
foreach ( array_reverse( $search_history ) as $query ) {
$output.= '<li><a href="' . esc_url( home_url( '/?s=' . urlencode( $query ) ) ) . '">' . esc_html( $query ) . '</a></li>';
}
$output.= '</ul>';
return $output;
} else {
return '<p>暂无搜索历史记录。</p>';
}
} else {
return '<p>请先登录以查看搜索历史记录。</p>';
}
}
add_shortcode( 'search_history', 'display_search_history_shortcode' );
此代码定义了一个名为
search_history
的短代码。当使用该短代码时,它会检查用户是否已登录。若已登录,则获取该用户的搜索历史记录,并将其以无序列表的形式输出,每个搜索关键词都链接到相应的搜索结果页面;若未登录,则提示用户先登录;若没有搜索历史记录,则提示暂无记录。
3. 在页面或文章中使用短代码
在 WordPress 后台编辑页面或文章时,只需在编辑器中输入
[search_history]
短代码,保存并发布页面或文章后,即可在相应位置显示用户的搜索历史记录。
4. 安全性和性能考虑
- 数据清理:搜索历史记录可能会不断增加,占用过多的数据库空间。你可以定期清理旧的搜索记录,例如只保留最近的 10 条记录。
收起
php
// 限制搜索历史记录数量
function limit_search_history() {
$user_id = get_current_user_id();
if ( $user_id ) {
$search_history = get_user_meta( $user_id, 'search_history', true );
if ( is_array( $search_history ) && count( $search_history ) > 10 ) {
$search_history = array_slice( $search_history, -10 );
update_user_meta( $user_id, 'search_history', $search_history );
}
}
}
add_action( 'template_redirect', 'limit_search_history' );
- 数据安全:在输出搜索关键词时,使用
esc_html()
和esc_url()
等函数对数据进行转义,防止 XSS 攻击。
通过以上步骤,你就可以在 WordPress 网站上显示用户的搜索历史记录了。
仍然有问题? 我们要如何帮助您?