加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > wordpress > 正文

纯代码WordPress文章添加点赞功能

发布时间:2020-12-14 14:27:45 所属栏目:wordpress 来源:网络整理
导读:由站长 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。 wordpress 的文章点赞方法很多,而且大多数都是依赖插件和第三方的附属功能。功能丰富的 WordPress 点赞插件不少,但对于要在主题中集成简单文章点赞功

以下代码由PHP站长网 52php.cn收集自互联网现在PHP站长网小编把它分享给大家,仅供参考

wordpress 的文章点赞方法很多,而且大多数都是依赖插件和第三方的附属功能。功能丰富的 WordPress 点赞插件不少,但对于要在主题中集成简单文章点赞功能的需求,插件就显得不合适,于是乎非插件实现文章点赞功能的方法就诞生,实现思路是:可以通过 ajax 实时显示点赞数量,自定义字段保存赞数量,Cookies 禁止重新点赞。所以今天分享出来一款非常简洁的纯代码实现 WordPress 主题点赞的功能。而且运用 cookies 有效的解决了重复点赞 bug,下面就是方法:


1. 将下面代码添加进 function.php

add_action('wp_ajax_nopriv_bigfa_like','bigfa_like');

add_action('wp_ajax_bigfa_like','bigfa_like');

function bigfa_like(){

global $wpdb,$post;

$id = $_POST["um_id"];

$action = $_POST["um_action"];

if ( $action == 'ding'){

$bigfa_raters = get_post_meta($id,'bigfa_ding',true);

$expire = time() + 99999999;

$domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false; // make cookies work with localhost

setcookie('bigfa_ding_'.$id,$id,$expire,'/',$domain,false);

if (!$bigfa_raters || !is_numeric($bigfa_raters)) {

update_post_meta($id,1);

}

else {

update_post_meta($id,($bigfa_raters + 1));

}

?

echo get_post_meta($id,true);

?

}

?

die;

}

2. 将以下代码扔进 footer.php 文件

<script type="text/javascript">

$.fn.postLike = function() {

if ($(this).hasClass('done')) {

return false;

} else {

$(this).addClass('done');

var id = $(this).data("id"),

action = $(this).data('action'),

rateHolder = $(this).children('.count');

var ajax_data = {

action: "bigfa_like",

um_id: id,

um_action: action

};

$.post("/wp-admin/admin-ajax.php",ajax_data,

function(data) {

$(rateHolder).html(data);

});

return false;

}

};

$(document).on("click",".favorite",

function() {

$(this).postLike();

});

</script>

3. 修改 single.php 文件,在你想要添加的地方,加入下列代码:

<a href="javascript:;" data-action="ding" data-id="<?php the_ID(); ?>" class="favorite<?php if(isset($_COOKIE['bigfa_ding_'.$post->ID])) echo ' done';?>">喜欢 <span class="count">

<?php if( get_post_meta($post->ID,true) ){

echo get_post_meta($post->ID,true);

} else {

echo '0';

}?>

</span>

</a>

现在是不是就已经好了?还没有呢,现在的效果还不好看,添加一段代码就好了,将这段代码扔进 style.css 文件,最底部就可以了:

.post-like{text-align:center;padding:10px}

.post-like a{ background-color:#21759B;border-radius: 3px;color: #FFFFFF;font-size: 12px;padding: 5px 10px;text-decoration: none;outline:none}

.post-like a.done,.post-like a:hover{background-color:#eee;color:#21759B;}

.post-like a.done{cursor:not-allowed}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读