WordPress用户中心订阅栏目功能的实现——Ajax免插件方式

WordPress用户中心订阅栏目功能的实现——Ajax免插件方式

WordPress用户中心订阅栏目功能的实现——Ajax免插件方式

使用网易新闻客户端看新闻的朋友对网易新闻的新闻栏目订阅功能都会比较熟悉。WordPress有着非常强大并且方便的内容管理界面,非常适合做一个新闻资讯类的网站。

如果你的网站上栏目非常多,提供一个订阅功能,让用户只订阅自己感兴趣的栏目是非常有必要的,在帮一个客户做WordPress新闻资讯主题的时候实现过这样的功能,抽空整理了一下其中的关键代码,在这里分享给大家。

dingyuepindao
用户中心订阅栏目功能

用户中心订阅功能的关键后台代码

/*订阅功能*/
add_action( 'wp_ajax_skill_exchange', 'ajax_skill_exchange' );
add_action( 'wp_ajax_nopriv_skill_exchange', 'ajax_skill_exchange' );
function ajax_skill_exchange() {

	$fid = $_POST['fid']; // 为ajax提交获取参数

    //获取当前用户id
	$current_user = wp_get_current_user();
	$uid = $current_user->ID;

    //获取当前用户订阅的栏目数组(下称订阅数组)
	$fids = get_user_meta($uid, 'fids', true);

	if(count($fids) == 0){//如果订阅数组长度为0,说明该用户没有订阅任何栏目。
		$fids = array($fid);
		$msg = array(
			'msg' => "订阅成功",
			'text' => "取消订阅"
		);
	} else {//如果不为0,说明用户已经订阅了一些栏目
		if(!in_array($fid, $fids)){//如果当前分类不在订阅数组,添加当前分类到订阅数组,订阅成功。
			array_push($fids, $fid);
			$msg = array(
				'msg' => "订阅成功",
				'text' => "取消订阅"
			);
		}else{//如果当前分流在订阅数组中,说明已经订阅过了,从订阅数组中移除此分类id,取消订阅成功
			foreach($fids as $k => $v) {
				if($v == $fid){
					unset($fids[$k]);
				}
			}
			$msg = array(
				'msg' => "取消订阅成功",
				'text' => "订阅栏目"
			);
		}
	}

    //最后,更新用户订阅,返回信息。
	update_user_meta($uid, 'fids', $fids);
	echo json_encode($msg);
	die(); //停止执行
}

订阅功能的前台关键代码

前端直接把栏目id写到html里面,方便获取。并根据用户订阅状态,判断按钮上面的文字是订阅还是取消订阅。

<?php $fids = get_user_meta($uid, 'fids', true); ?>
<?php foreach($wp_query as $q) {
    <a class="exchange" href="" data-id="<?php echo $q->ID ?>" title=""><?php echo(!in_array($q->ID, $fids)) ? "订阅" : "取消订阅"; ?></a>
<?php } ?>

前端通过Ajax提交需要订阅的栏目ID到后端。

jQuery(document).ready(function($) {
	/*订阅和取消订阅*/
	$('.exchange').click(function(){
		event.preventDefault();
		$.ajax({
		method: 'POST',
			url: ajax_object.ajaxurl,
			dataType: "json",
			data: {
				action: 'skill_exchange',
				fid: $(this).data("id")
			},
			success: function(data){
				alert(data.msg);
				window.location.reload()
			}}
		);
	});
});
dingyueyonghu
用户中心订阅用户功能

除了订阅栏目,以上代码稍作修改,我们还可以订阅(关注)用户,只需要把上面的分类id修改为用户id就可以了。

本站提供 WordPress 主题定制开发服务

本站长期承接WordPress主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有7年 WordPress 开发经验, 如果你想用 WordPress 开发网站, 请联系 QQ: 470266798 或邮箱: 4626395@gmail.com 咨询。

2 thoughts on “WordPress用户中心订阅栏目功能的实现——Ajax免插件方式

  1. 订阅以后,栏目中更新内容是会给订阅者发邮件通知吗?还是显示更新在作者的主页?

    1. 这个只是介绍的添加订阅的逻辑,发送订阅通知的逻辑需要自己实现。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*