WordPress纯代码实现文章收藏功能

2021-05-22 0 1,700 百度已收录

最近在开发我们自己的吉他资源平台-乐瑶吉他的时刻,用到了文章珍藏的功效,之前做这个功效的时刻都是适用的现成的插件,这次不想用那么多的插件了,以是就直接自己用代码写了一下这个文章珍藏功效。首先将下面的代码放到您的functions.php文件中。

  1. function post_shoucang(){
  2.     if(!get_current_user_id()){
  3.         exit(json_encode(['msg'=>'请先登录才气珍藏哦!']));
  4.     }
  5.     $id = $_POST["id"];
  6.     $meta = get_post_meta($id,'shoucang',true);
  7.     $shoucang1 = explode(',',get_post_meta($id,'shoucang',true));
  8.     $shoucang =  array_filter($shoucang1); 
  9.     $user = get_current_user_id();
  10.     if(in_array($user,$shoucang)){ 
  11.         foreach($shoucang as $k=>$v){
  12.             if($v==$user){
  13.                 unset($shoucang[$k]);
  14.             }
  15.         }
  16.         update_post_meta($id, 'shoucang', implode(",",$shoucang));
  17.         exit(json_encode(['msg'=>'已作废珍藏']));
  18.     }else{
  19.         array_push($shoucang,$user);
  20.         update_post_meta($id, 'shoucang', implode(",",$shoucang));
  21.         exit(json_encode(['msg'=>'珍藏乐成']));
  22.     }   
  23. }
  24. add_action('wp_ajax_post_shoucang','post_shoucang');
  25. add_action('wp_ajax_nopriv_post_shoucang','post_shoucang');

其次,是在文章页中放入下面的html代码(珍藏按钮):

  1. <?php
  2. $shoucang1 = explode(',',get_post_meta(get_the_ID(),'shoucang',true));
  3. $shoucang = array_filter($shoucang1);
  4. $user = get_current_user_id();
  5. ?>
  6. <a class="shoucang <?php if(in_array($user,$shoucang)){ foreach($shoucang as $k=>$v){if($v==$user){echo "on";}}} ;?>" data-id="<?php the_ID();?>" href="javascript:;" rel="external nofollow"  rel="external nofollow" >
  7. <span>珍藏</span>
  8. </a>

样式方面就自己界说吧,其中,若是文章已经珍藏过了,会在珍藏按钮的a标签上多一个on的类,你可以使用这个类界说珍藏过的样式。最后,还需要有一段JS文件,你可以放到您的footer.php中。

  1. <script> $('a.shoucang').click(function(){
  2. var id = $(this).data("id");
  3. $.ajax({
  4. url: "/wp-admin/admin-ajax.php",
  5. type:'post',
  6. dataType:'json',
  7. data:{action:'post_shoucang',id:id},
  8. success: function(data){
  9. layer.alert(data.msg, function(){
  10. location.reload();
  11. });
  12. }
  13. });
  14. });</script>

为了更好的体验效果,珍藏乐成以及作废乐成的新闻提醒使用了layer这个jQuery弹出层插件,以是,您还需要在主题中引入这个框架的文件(下载地址),下载后把整个文件夹放到您的主问题录中,然后在主题头部引入layer.js

通过以上方式已经完成了对文章的珍藏及作废珍藏功效(只有登任命户才气珍藏)。珍藏后人人一定还需要获取出来每个用户自己珍藏的文章的列表,以往使用插件获取珍藏列表的时刻样式都是牢靠的,自界说起来就要改插件,然则使用上面的方式,获取珍藏列表的时刻你想展示什么样的列表就看你自己了。获取方式如下:

  1. <?php
  2. $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  3. $args=array(
  4. 'cat' => 5, // 分类ID,若是不需要限制是哪个分类,可以不写这个条件
  5. 'showposts' => 16,
  6. 'paged' => $paged,
  7. );
  8. query_posts($args);
  9. if(have_posts()) : while (have_posts()) : the_post();
  10. ?>
  11. <?php
  12. $shoucangmeta1 = explode(',',get_post_meta($id,'shoucang',true));
  13. $shoucangmeta = array_filter($shoucangmeta1);
  14. ?>
  15. <?php if(in_array(get_current_user_id(),$shoucangmeta)){ ?>
  16. <li>
  17. <a class="videolistbox" href="<?php%20the_permalink();?>" rel="external nofollow"  title="<?php the_title();?>">
  18. <div class="thumbbox">
  19. <?php $thumburl = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), array(400,270));?>
  20. <img class="defaultthumb" src="<?php%20echo%20$thumburl[0];?>" alt="<?php the_title();?>" title="<?php the_title();?>">
  21. <i class="videobutton fa fa-caret-square-o-right"></i>
  22. </div>
  23. <h3><?php the_title();?></h3>
  24. <div class="videolisttag">
  25. <span>
  26. <i class="fa fa-calendar" aria-hidden="true"></i>
  27. <?php the_time('m,d');?>
  28. </span>
  29. <span>
  30. <i class="fa fa-eye" aria-hidden="true"></i>
  31. <?php post_views(' ', ' 次'); ?>
  32. </span>
  33. <div class="clearfix"></div>
  34. </div>
  35. </a>
  36. <a class="posteditbutton shoucang" data-id="<?php the_ID();?>" href="javascript:;" rel="external nofollow"  rel="external nofollow" >作废珍藏</a>
  37. </li>
  38. <?php } ?>
  39. <?php endwhile; else : ?>
  40. <div class="sp-mod-empty">
  41. <img src="<?php%20bloginfo('template_directory');%20?>/images/empty.png" class="empty-images">
  42. <p class="empty-txt">您还没有珍藏任何弹唱视频哦~</p>
  43. </div>
  44. <?php endif;?>
  45. <div class="clearfix"></div>
  46. <div class="page_navi text-center">
  47. <?php par_pagenavi(9); ?>
  48. </div>
  49. <?php wp_reset_query(); ?>

仔细看上面的代码,实在就是通俗的循环获取文章,只不外在循环中多了个判断,判断当前用户的id是否在获取到的文章的”shoucang”这个字段里,若是在则显示出来。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3308869544
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有猫币奖励和额外收入!

主题镇 WP教程 WordPress纯代码实现文章收藏功能 https://zhutizhen.com/14692.html

永远为用户服务的镇长!

常见问题
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或联络我们。
查看详情

相关文章