WordPress添加用户关注功能教程

第一步:将以下代码复制到你的主题 functions.php 文件



    function wpdiary_user_guanzhu(){

     

        if(!get_current_user_id()){

            exit(json_encode(['msg'=>'请登录!']));

        }

        if( $_POST['user']==get_current_user_id()){

            exit(json_encode(['msg'=>'你不能关注自己!']));

        }

     

        $user = $_POST['user'];

        $meta     = get_user_meta(get_current_user_id(),'guanzhu',true);

        $bguanzhu1 = explode(',',get_user_meta($user,'bguanzhu',true)); 

        $bguanzhu = array_filter($bguanzhu1);   

        $guanzhu1  = explode(',',get_user_meta(get_current_user_id(),'guanzhu',true));

        $guanzhu = array_filter($guanzhu1);

        if(in_array($user,$guanzhu)){

     

            foreach($guanzhu as $k=>$v){

                if($v==$user){

                    unset($guanzhu[$k]);

                }

            }

     

            foreach($bguanzhu as $k=>$v){

                if($v==get_current_user_id()){

                    unset($bguanzhu[$k]);

                }

            }

     

            update_user_meta(get_current_user_id(),'guanzhu',implode(",",$guanzhu));

            update_user_meta($user,'bguanzhu',implode(",",$bguanzhu));

            exit(json_encode(['msg'=>'取消成功!']));

        }else{

            array_push($guanzhu,$user);

            array_push($bguanzhu,get_current_user_id());

            update_user_meta(get_current_user_id(),'guanzhu',implode(",",$guanzhu));

            update_user_meta($user,'bguanzhu',implode(",",$bguanzhu));

            exit(json_encode(['msg'=>'关注成功!']));

        }

     

    }

     

    add_action('wp_ajax_guanzhu','wpdiary_user_guanzhu');

    add_action('wp_ajax_nopriv_guanzhu','wpdiary_user_guanzhu');

    //获取指定用户关注数量

    function get_wpdiary_guanzhu_count($authorID){

        $meta  = get_user_meta($authorID,'guanzhu',true);

        if($meta){

            $guanzhu = explode(",",get_user_meta($authorID,'guanzhu',true));

            return count($guanzhu);

        }else{

            return 0;

        }

     

    }

    //获取指定用户被关注数量

    function get_wpdiary_bguanzhu_count($authorID){

        $meta  = get_user_meta($authorID,'bguanzhu',true);

        if($meta){

            $bguanzhu = explode(",",get_user_meta($authorID,'bguanzhu',true));

            return count($bguanzhu);

        }else{

            return 0;

        }

     

    }


第二步:添加消息提示弹窗特效,在主题中引入layui框架的 layer.js,并将下面的JS代码放到你主题的footer.php文件中



    <script>

        $('a.addfollow').click(function(){

    		var user = $(this).attr('user');

    		$.ajax({ 

    			url: "/wp-admin/admin-ajax.php", 

    			type:'post',

    			dataType:'json',

    			data:{action:'guanzhu',user:user}, 

    			success: function(data){

    			    layer.alert(data.msg, function(){

    		 			location.reload();

    		 		});

    	  		}

    		});

    	});

    </script>


第三步:将关注按钮放到您需要放的地方,比如用户列表中或作者存档页,关注按钮代码如下



    <?php 

    $meta  = get_user_meta(get_current_user_id(),'guanzhu',true);

    $user = ‘要被关注的用户的ID’

    if($meta){

        $guanzhu = explode(',',$meta);

    }else{

        $guanzhu = array();

    }

    if(in_array($user,$guanzhu)){?>

        <a href="javascript:;" user="<?php echo $user;?>" class="addfollow focus-link">+取消关注</a>

    <?php }else{?>

        <a href="javascript:;" user="<?php echo $user;?>" class="addfollow focus-link">+ 关注</a>

    <?php }?>


第四步:获取指定用户关注和被关注数量

    <?php echo get_wpdiary_guanzhu_count(‘用户ID’);?>//获取指定用户关注数量
    <?php echo get_wpdiary_bguanzhu_count(‘用户ID’);?>//获取指定用户被关注数量

第五步:获取当前登录用户关注的用户的列表



    <?php 

        $user_id = get_current_user_id();//当前登录用户id,也可以指定为某个ID的用户,这样获取到的就是指定ID的用户的关注列表

    	$meta  = get_user_meta($user_id,'guanzhu',true);

    	$guanzhulist = explode(',',$meta );

    	$users = get_users(array('include'=>$guanzhulist));

    ?>

    <?php foreach($users as $user){ ?>

        <li class="pic-btn-li">

            <div class="li-pic">

                <a href="<?php%20echo%20get_author_posts_url(%20$user->ID);%20?>/?userid=<?php%20echo%20$user->ID;?>" target="_blank" class="li-link">

                   <?php echo get_avatar($user->ID);?>

                </a>

            </div>

            <div class="li-dec">

                <p class="dec-name">

                    <a href="<?php%20echo%20get_author_posts_url(%20$user->ID);%20?>/?userid=<?php%20echo%20$user->ID;?>" target="_blank" class="dec-name-link"><?php echo $user->nickname;?></a>

                </p>

                <p class="dec-sub">

                    <span class="dec-fans">粉丝 <?php echo get_wpdiary_bguanzhu_count($user->ID);?></span>

                </p>

            </div>

            <a href="javascript:;" user="<?php echo $user->ID;?>" class="addfollow sp-mod-button" title="关注他">取消</a>

        </li>

    <?php } ?>


第六步:获取关注过当前登录用户的列表(被关注列表,也可以说是粉丝列表)



    <?php 

        $user_id = get_current_user_id();//当前登录用户id,也可以指定为某个ID的用户,这样获取到的就是关注过指定ID的用户列表(粉丝列表)

        $bguanzhu = get_user_meta($user_id,'bguanzhu',true);

        $fanslist = explode(',',$bguanzhu );

        $fans = get_users(array('include'=>$fanslist));

    ?>

    <?php foreach($fans as $fensi){ ?>

        <li class="pic-btn-li">

            <div class="li-pic">

                <a href="<?php%20echo%20get_author_posts_url(%20$fensi->ID);%20?>/?userid=<?php%20echo%20$fensi->ID;?>" target="_blank" class="li-link">

                   <?php echo get_avatar($fensi->ID);?>

                </a>

            </div>

            <div class="li-dec">

                <p class="dec-name">

                    <a href="<?php%20echo%20get_author_posts_url(%20$fensi->ID);%20?>/?userid=<?php%20echo%20$fensi->ID;?>" target="_blank" class="dec-name-link"><?php echo $fensi->nickname;?></a>

                </p>

                <p class="dec-sub">

                    <span class="dec-fans">粉丝 <?php echo get_wpdiary_bguanzhu_count($fensi->ID);?></span>

                </p>

            </div>

            <?php 

            $meta  = get_user_meta(get_current_user_id(),'guanzhu',true);

            $user = $fensi->ID;

            if($meta){

                $guanzhu = explode(',',get_user_meta(get_current_user_id(),'guanzhu',true));

            }else{

                $guanzhu = array();

            }

            if(in_array($user,$guanzhu)){?>

                <a href="javascript:;" user="<?php echo $fensi->ID;?>" class="addfollow sp-mod-button" title="取消关注">已互关</a>

            <?php }else{?>

                <a href="javascript:;" user="<?php echo $fensi->ID;?>" class="addfollow sp-mod-button" title="关注他">关注他</a>

            <?php }?>

        </li>

    <?php } ?>


综合上述:WordPress纯代码添加用户关注功能就是这么简单,更多样式效果就靠大家自行研究了。

相关文章

WordPress添加分类筛选功能教程

阅读 7

第一步:将以下代码复制到你的主题functions.php文件中: //获取当前分类ID function get_category_root_id($cat) { $this_category = get_category($cat...博文来自:技术博客

WordPress添加自定义QQ分享、微博分享功能教程

阅读 29

使用到的接口: 1.分享到QQ空间接口:https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=你的网址&sharesource=qzone&title=你的...博文来自:技术博客

WordPress邀请码功能开发教程

阅读 30

开发网站过程中需要对用户注册增加一个邀请码功能,以下是邀请码功能开发详细教程 第一步:需要新建一个数据表来保存邀请码 code:邀请码、max:邀请码使用次数...博文来自:技术博客

WordPress登录后才能查看网站内容,未登录跳转登录页面教程

阅读 34

实现代码很简单,找全站执行的钩子,这里选了template_redirect钩子,这个动作钩子在加载模板时执行,当然其它很多都可以用。 <?php //template_redire...博文来自:技术博客

网信办要求网站4月3日起设置黑白主页教程,代码兼容ie、firefox、chrome、opera、safari

阅读 1,857

根据国务院文件,4月3日起为为全国哀悼日期间,全国和各驻外机构下半旗志哀,停止公共娱乐活动,外交部和我国驻外使领馆设立吊唁簿。NAZ.CN将整站换成素装。...博文来自:技术博客

我约微博上传文件存放绝对路径设置

阅读 21

后台–系统设置–网站信息–上传文件存放绝对路径 例如: 末尾不带 / 或 \,目前网站根目录绝对路径:D:\phpstudy_pro\WWW\www.woyue.cn/ 我们填写的时候...博文来自:技术博客

源码下载

NAZ.CN官方主题旗舰版V1.0.0,正版完全开源,带整站源码,带数据

阅读 354

NAZ.CN官方主题旗舰版V1.0.0已经上线,现在官网已经升级至旗舰版 购买后我们有专门的售后一对一服务,小白也能轻松驾驭! 为什么要卖这个主题? 疫情期间,待...博文来自:WordPress

微商城包含小程序商城,公众号商城,H5商城,基于Thinkphp开发的商城系统

阅读 318

微信公众号商城和小程序商城数据同步,带积分、优惠券、秒杀、砍价、分销等功能,更是一套方便二次开发的框架 2020.03.03独家更新: 1.接入支付宝支付接口(...博文来自:Thinkphp

NAZ.CN官方主题运营版V1.0.0限量发售-正版完全开源,带整站源码,不带数据,无需授权,支持模板扩展,可二次开发!

阅读 651

NAZ.CN官方主题运营版V1.0.0限量发售啦,一套真正运营起来就能赚钱的系统,不需要授权!完全开源!我们是真正的为站长和用户着想,买回去搭建就能正常使用,也...博文来自:WordPress

我约任务悬赏系统完全开源版不断更新,抖音/快手关注点赞任务平台源码

阅读 298

这款源码会不断更新,适合做抖音/快手关注点赞任务平台,也可以二次开发适合各行各业,具体大家可以看演示站 测试会员账号:test 密码:test 更新记录 2020-...博文来自:Thinkphp

赶快加入我们吧~注册一个账号

NAZ.CN 从零开始学建站,学习技能、解决问题!

每个月,我们帮助开发者解决各种各样的技术问题。并助力他们在技术能力上获得提升。
没有账号? 忘记密码?

社交账号快速登录