WordPress制作用户个人收藏中心
· 阅读需 4 分钟
整理完整的个人收藏中心实现流程和代码。
1. 在functions.php中添加以下代码:
// 1. 注册必要的脚本和样式
function enqueue_favorite_scripts() {
wp_enqueue_script('jquery');
wp_enqueue_script('favorite-script', get_stylesheet_directory_uri() . '/custom.js', array('jquery'), '1.0', true);
wp_localize_script('favorite-script', 'ajax_object', array(
'ajax_url' => admin_url('admin-ajax.php')
));
}
add_action('wp_enqueue_scripts', 'enqueue_favorite_scripts');
// 2. 添加收藏按钮到文章
function add_favorite_button() {
if (is_single() && is_user_logged_in()) {
$post_id = get_the_ID();
$user_id = get_current_user_id();
$favorites = get_user_meta($user_id, 'user_favorites', true);
if (!is_array($favorites)) {
$favorites = array();
}
$is_favorited = in_array($post_id, $favorites);
$button_text = $is_favorited ? '取消收藏' : '收藏文章';
$button_class = $is_favorited ? 'favorited' : '';
echo '<button class="favorite-button ' . $button_class . '" data-post-id="' . $post_id . '">' . $button_text . '</button>';
}
}
add_action('astra_entry_content_after', 'add_favorite_button');
// 3. 处理AJAX收藏请求
function handle_favorite_action() {
if (!is_user_logged_in()) {
wp_send_json_error('请先登录');
}
$post_id = isset($_POST['post_id']) ? intval($_POST['post_id']) : 0;
$user_id = get_current_user_id();
$favorites = get_user_meta($user_id, 'user_favorites', true);
if (!is_array($favorites)) {
$favorites = array();
}
if (in_array($post_id, $favorites)) {
$favorites = array_diff($favorites, array($post_id));
$action = 'removed';
} else {
$favorites[] = $post_id;
$action = 'added';
}
update_user_meta($user_id, 'user_favorites', $favorites);
wp_send_json_success(array(
'action' => $action,
'message' => $action === 'added' ? '收藏成功' : '已取消收藏'
));
}
add_action('wp_ajax_handle_favorite', 'handle_favorite_action');