!
也想出现在这里? 联系我们
广告位

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

WordPress 的文章点赞方法很多,而且大多数都是依赖插件和第三方的附属功能。功能丰富的 WordPress 点赞插件不少,但对于要在主题中集成简单文章点赞功能的需求,插件就显得不合适,于是乎非插件实现文章点赞功能的方法就诞生。

实现思路是:可以通过 ajax 实时显示点赞数量,自定义字段保存赞数量,Cookies 禁止重新点赞。

所以今天分享出来一款非常简洁的纯代码实现 WordPress 主题点赞的功能。而且运用 cookies 有效的解决了重复点赞 bug,下面就是方法:

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

  1. add_action('wp_ajax_nopriv_bigfa_like', 'bigfa_like');
  2. add_action('wp_ajax_bigfa_like', 'bigfa_like');
  3. function bigfa_like(){
  4. global $wpdb,$post;
  5. $id = $_POST["um_id"];
  6. $action = $_POST["um_action"];
  7. if ( $action == 'ding'){
  8. $bigfa_raters = get_post_meta($id,'bigfa_ding',true);
  9. $expire = time() + 99999999;
  10. $domain = ($_SERVER['HTTP_HOST'] != 'localhost') ? $_SERVER['HTTP_HOST'] : false; // make cookies work with localhost
  11. setcookie('bigfa_ding_'.$id,$id,$expire,'/',$domain,false);
  12. if (!$bigfa_raters || !is_numeric($bigfa_raters)) {
  13. update_post_meta($id, 'bigfa_ding', 1);
  14. }
  15. else {
  16. update_post_meta($id, 'bigfa_ding', ($bigfa_raters + 1));
  17. }
  18. echo get_post_meta($id,'bigfa_ding',true);
  19. }
  20. die;
  21. }

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

  1. <script type="text/javascript">
  2. $.fn.postLike = function() {
  3. if ($(this).hasClass('done')) {
  4. return false;
  5. } else {
  6. $(this).addClass('done');
  7. var id = $(this).data("id"),
  8. action = $(this).data('action'),
  9. rateHolder = $(this).children('.count');
  10. var ajax_data = {
  11. action: "bigfa_like",
  12. um_id: id,
  13. um_action: action
  14. };
  15. $.post("/wp-admin/admin-ajax.php", ajax_data,
  16. function(data) {
  17. $(rateHolder).HTML(data);
  18. });
  19. return false;
  20. }
  21. };
  22. $(document).on("click", ".favorite",
  23. function() {
  24. $(this).postLike();
  25. });
  26. </script>

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

  1. <a href="javascript:;" rel="external nofollow" data-action="ding" data-id="<?php the_ID(); ?>" class="favorite<?php if(isset($_COOKIE['bigfa_ding_'.$post->ID])) echo ' done';?>">喜欢 <span class="count">
  2. <?php if( get_post_meta($post->ID,'bigfa_ding',true) ){
  3. echo get_post_meta($post->ID,'bigfa_ding',true);
  4. } else {
  5. echo '0';
  6. }?>
  7. </span>
  8. </a>

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

  1. .post-like{text-align:center;padding:10px}
  2. .post-like a{ background-color:#21759B;border-radius: 3px;color: #FFFFFF;font-size: 12px;padding: 5px 10px;text-decoration: none;outline:none}
  3. .post-like a.done, .post-like a:hover{background-color:#eee;color:#21759B;}
  4. .post-like a.done{cursor:not-allowed}

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress获取文章特色图像路径函数

2023-9-28 14:37:46

WordPress教程

给WordPress添加图片延迟加载

2023-10-13 14:21:11

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索