非插件实现wordpress文章点赞功能
要在WordPress中实现文章点赞功能,您可以使用自定义代码而不是插件。以下是一种通过添加自定义功能来实现文章点赞的方法:
-
打开主题的 functions.php 文件:在您的WordPress主题目录中找到 functions.php 文件,通常位于 wpcontent/themes/yourthemename/ 目录下。在修改之前,请确保备份文件以防出现问题。
-
添加以下代码:在 functions.php 文件的末尾添加以下代码:
// 添加点赞按钮到文章
function add_like_button() {
global $post;
$post_id = $post>ID;
$likes = get_post_meta($post_id, 'likes', true);
$likes = (empty($likes)) ? 0 : $likes;
// 检查用户是否已经点赞
$user_has_liked = false;
$liked_users = get_post_meta($post_id, 'liked_users', true);
if (is_array($liked_users) && in_array(get_current_user_id(), $liked_users)) {
$user_has_liked = true;
}
// 显示点赞按钮和计数
echo '<div class="likebutton">';
echo '<button id="likebutton" datapostid="' . $post_id . '" dataliked="' . $user_has_liked . '">' . ($user_has_liked ? '已赞' : '点赞') . '</button>';
echo '<span class="likecount">' . $likes . ' 人赞过</span>';
echo '</div>';
}
add_action('the_content', 'add_like_button');
// 处理点赞的 AJAX 请求
function like_post() {
if (isset($_POST['post_id'])) {
$post_id = $_POST['post_id'];
$user_id = get_current_user_id();
$liked_users = get_post_meta($post_id, 'liked_users', true);
if (!$liked_users) {
$liked_users = array();
}
if (!in_array($user_id, $liked_users)) {
$liked_users[] = $user_id;
update_post_meta($post_id, 'liked_users', $liked_users);
$likes = get_post_meta($post_id, 'likes', true);
$likes;
update_post_meta($post_id, 'likes', $likes);
} else {
echo '已赞';
}
echo $likes . ' 人赞过';
}
wp_die();
}
add_action('wp_ajax_like_post', 'like_post');
add_action('wp_ajax_nopriv_like_post', 'like_post');
// 引入 JavaScript
function enqueue_like_script() {
wp_enqueue_script('likescript', get_template_directory_uri() . '/js/like.js', array('jquery'), null, true);
wp_localize_script('likescript', 'like_obj', array('ajax_url' => admin_url('adminajax.php')));
}
add_action('wp_enqueue_scripts', 'enqueue_like_script');
- 创建 JavaScript 文件:在您的主题文件夹中创建一个名为 "like.js" 的 JavaScript 文件,然后添加以下代码:
jQuery(document).ready(function($) {
$('.likebutton button').on('click', function() {
var post_id = $(this).data('postid');
var user_has_liked = $(this).data('liked');
if (!user_has_liked) {
$.ajax({
type: 'POST',
url: like_obj.ajax_url,
data: {
action: 'like_post',
post_id: post_id
},
success: function(response) {
$('.likebutton button').text('已赞');
$('.likecount').html(response);
$('.likebutton button').data('liked', true);
}
});
}
});
});
这段代码将在用户点击“点赞”按钮时触发 AJAX 请求,更新点赞计数和按钮的状态。
-
样式调整:您可以根据自己的主题样式进行必要的样式调整,以确保点赞按钮和计数显示在合适的位置。
-
保存并刷新您的网站:保存 functions.php 文件和 like.js 文件的更改,并刷新您的WordPress网站。现在,您应该能够看到点赞按钮出现在您的文章中,并且可以通过点击按钮来点赞文章。
请注意,这只是一个简单的点赞功能的示例,您可以根据需要进行定制和扩展。此外,由于直接编辑主题文件可能会对您的主题造成影响,因此在进行任何更改之前,建议备份您的网站。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
仍然有问题? 我们要如何帮助您?