WordPress无刷新AJAX点赞功能
无插件点赞功能由 #Fatesinger# 提供,不过 @大发 好像删除了该篇文章。
实现原理大体是通过自定义字段保存赞数量,通过Cookie记录并禁止重复赞。
具体的代码如下:
function.php
/**
* AJAX点赞
* by: #fatesinger.com
* modify: #biji.io #bgbk.org
*/
function dotGood()
{
global $wpdb, $post;
$id = $_POST["um_id"];
if ($_POST["um_action"] == 'topTop') {
$specs_raters = get_post_meta($id, 'dotGood', true);
$expire = time() + 99999999;
$domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false; // make cookies work with localhost
setcookie('dotGood_' . $id, $id, $expire, '/', $domain, false);
if (!$specs_raters || !is_numeric($specs_raters)) update_post_meta($id, 'dotGood', 1);
else update_post_meta($id, 'dotGood', ($specs_raters + 1));
echo get_post_meta($id, 'dotGood', true);
}
die;
}
add_action('wp_ajax_nopriv_dotGood', 'dotGood');
add_action('wp_ajax_dotGood', 'dotGood');
JavaScript
$.fn.postLike = function () {
if ($(this).hasClass('done')) {
alert('点多了伤身体~');
return false;
} else {
$(this).addClass('done');
var id = $(this).data("id"),
action = $(this).data('action'),
rateHolder = $(this).children('.count');
var ajax_data = {
action: "dotGood",
um_id: id,
um_action: action
};
$.post("/wp-admin/admin-ajax.php", ajax_data,
function (data) {
$(rateHolder).html(data);
});
return false;
}
};
$(".dotGood").click(function () {
$(this).postLike();
});
CSS
.post-like{margin:10% 0 0;position:relative;}
.post-like a.dotGood{height:30px;line-height:30px;width:30px;font-size:24px;text-align:center;display:inline-block;cursor: pointer;position:relative;}
.post-like a.dotGood.done{color: #e2264d;}
.post-like a.dotGood span{position:absolute;display:inline-block;top:0;left:26px;width:auto;font-size:14px;}
.post-like a.dotGood span:before{content:'+';}
HTML
<a href="javascript:;" data-action="topTop" data-id="<?php the_ID(); ?>"
class="dotGood <?php echo isset($_COOKIE['dotGood_' . $post->ID]) ? 'done' : ''; ?>">
♥
<span class="count"><?php echo ($dot_good=get_post_meta($post->ID, 'dotGood', true)) ? $dot_good : '0'; ?></span>
</a>
至此,点赞功能就可以实现了。
之前在百度上找到过这样的教程,就是点击赞没反应,等上电脑了试试你的教程。收藏下。 :neutral:
点赞没反应?Console有报错么?
报错倒是没发现,就是点赞不增加数字。准确说是点不了。。。你的教程我明天试试看。我那主题就差点点赞了。 :eek:
今天试了下你的这个方法,依然还是点击 赞 的时候,一直是0.点不了。。。点了木有反应。。。 :shock:
估计是admin-ajax.php的问题 :razz:
我那个评论ajax也是用的admin-ajax.php的。用大发说的方法。成功了。这个点赞真是头大、有空了再研究下看看。 :???:
新模板很漂亮啊。 :wink:
:???: 还没做完,但是已经不知道怎么做下去了
又换新衣服啦 :wink: :wink: :wink:
任性
好功能 :mrgreen:
然并卵 :arrow:
又改了主题
难道不是很普通的一件事吗
广告那里,2年是950了~~~
:arrow: 他博客写的也是950,但是前两天官网两年是900块钱,我元旦买的vps,还找他花了400优惠续了1年呢,没想到今天就950了
主题不错!很简洁 :grin:
几天不见,改版了呀 :wink:
学习了!正在纠结播放器的 A/Pjax 播放,不知道从何下手……
先做出来播放器。。。
:razz: 可以用别人的播放器插件耶 :roll: 然后……
:arrow: 新年快乐
8错。 :razz:
好久没来。。你又改版了 :grin:
然而估计还会大改动
不错,用的正是WordPress :mrgreen: :mrgreen: :mrgreen:
JavaStcrpt写错了吧?看着怪怪的 :!: JavaScript :smile:
啊哈,不知道为啥就写错了
:arrow: 请统一一下评论的字体,亲爱的!
。。当初觉得宋体蛮好看的,就脑抽的单独给评论区设置了宋体。。。回头改回去
wordpress.org/plugins/wp-postlike/
大发有个插件
啊哈,知道啊,但是这不是不用安装插件了么
不错,就是这代码为啥分了三个段落,是因为要用在不同的地方吗?
已经放不下啦!
这站点的模板特别简洁。。。不知道图片表现是怎样 :smile:
可以参考这篇文章:https://biji.io/2016/4657.html
可以试试 WP-PostRatings 这个插件
用插件还是要改主题,何不直接主题里实现。。。
现在用到数据储存的(比如点赞)我都用插件实现,这样数据不会因为更换主题而丢失,具有通用性。
实际情况是,我并不会使用第三方主题,我只用我自己做的主题。。。
这四段代码都是放在function.php里面的吧??求解 :sad:
不是,只有第一段是放function里的。。。你好像不是很懂的样子,那就不要改文件了吧。。。或者备份好文件自己尝试几遍
ddd第一段是放function里的。。。你好像不是很懂的样子,那就不要改文件了吧。。。或者备份好文件自己尝试几遍
应该怎么调用呢
对最新版的wp起作用不?
他人发帖数
你好像不是很懂的样子
好像是不错的功能
我看前两段代码都自带,然后第三段代码我手动加上的。但是我实在不知道最后一段html代码应该加在哪里@_@。还请大佬指点