对倡萌童鞋《WordPress 个人资料添加额外的字段》的补充

用户在站内注册并登录你的Wordpress网站后,如果他可以来到后台,不管他是什么角色(role),都会在后台左侧菜单看到“我的个人资料”这个菜单项,点击后,可以进入该页面。

WP大学的倡萌童鞋写了一篇文章:《WordPress 个人资料添加额外的字段》,我是搜索特定关键词edit_user_profile+show_user_profile找到这个页面的,我就就一个自己插件的限定条件免费组件写一篇小文章,算是对这篇文章的扩展吧!

任何通过WordpressAPI实现的数据存取,都应该考虑

  • 如何存?
  • 如何取?
  • 取出数据后如何显示?

这三个问题,你可能觉得我说的有点儿啰嗦,好吧,不啰嗦了,直接上代码:

<?php
/*
Plugin Name: Coolwp ALP add-on for user profile
Plugin URI: http://suoling.net/access-level-pro/
Description:This is an add-on of ALP(Access Level Pro),more info:<a href="http://suoling.net/access-level-pro/" title="Access Level Pro">Click HERE!</a>
Version: 1.0.0
Author: Suifengtec
Author URI: http://suoling.net/
Text Domain: cwpalp
License: http://suoling.net/licenses
*/
function coolwp_alp_for_user_profile_page( $user ) {
/*
	判断所需的父插件是否存在,判断依据是父插件中的一个函数是否存在,如果存在,就怎么着...
*/
	if(function_exists('sl_get_subscription_id')){

		$user_ID = get_current_user_id();
/*
	获取当前用户ID,然后判断该用户是否处在付费订阅有效期内,如果是,那么就怎么着...
*/
	if(sl_is_active( $user_ID ) && sl_is_paid_user($user_ID)){
		$cwp_alp_has_actived ='是';
		//获取某用户的订阅等级ID
		$cwp_alp_user_level = sl_get_subscription_id( $user_ID );
		//获取该用户订阅等级信息
		$cwp_get_level_info=sl_get_subscription_details( absint($cwp_alp_user_level ));
		//该用户订阅等级名称
		$cwp_alp_user_level_name =$cwp_get_level_info->name;
		//该用户订阅等级描述
		$cwp_alp_user_level_des =$cwp_get_level_info->description ;
		//该用户订阅等级周期的数字部分
		$cwp_alp_user_level_duration_num =$cwp_get_level_info->duration ;
		//该用户订阅等级周期的单位部分
		$cwp_alp_user_level_duration_unit =$cwp_get_level_info->duration_unit;
		//该用户订阅等级是否激活
		$cwp_alp_user_level_status =$cwp_get_level_info->status;
		$cwp_alp_user_access_level=sl_get_subscription_access_level($cwp_alp_user_level);
		$cwp_alp_user_expiration = get_user_meta( $user_ID, 'sl_expiration', true );
		$cwp_alp_user_level_output= __('订阅等级:', 'cwpalp').'<span style="color:green"> '.$cwp_alp_user_level_des.'</span>  ,'.__('权限等级为:', 'cwpalp').' <span style="color:green">'.$cwp_alp_user_access_level.'</span>; '.__('时长:', 'cwpalp').':<span style="color:green">'.$cwp_alp_user_level_duration_num.__($cwp_alp_user_level_duration_unit,'cwpalp').'</span> . ';
		$tr_css='alp-ok';
/*
	如果当前用户不出在有效的付费订阅期内,那么,就怎么着...
*/
}else{
	$cwp_alp_has_actived ='<span class="alp-error">否</span>';
	$cwp_alp_user_level_name ='<span class="alp-error">未激活或者已过期!</span>';
	$cwp_alp_user_expiration=$cwp_alp_user_level_name;
	$cwp_alp_user_level_output=$cwp_alp_user_level_name;
	$tr_css='alp-error';

}
?>
<!--
直接将CSS写在这里了,就不单独建个文件enqueue了,算是减少一个http请求吧。
-->
<style>
	.cwp-alp-data{
		background:#59524C;
		padding:10px;
		padding-left:10px;
		border-radius: 5px;
		font-family: "Microsoft Yahei",sans-serif;
	}
	.cwp-alp-data label{
		padding-left:10px;
		color:#fff;
	}
	h3.alp-user-profile-heading{
		color:#59524C;
		text-align:center;
	}
	td.alp-ok,td.alp-error{
		float:left;
		margin: 5px 0 15px;
		border: 0;
		padding: 1px 12px;
		background-color: #fff;

		-webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
		box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
	}
	td.alp-ok{
		border-left: 4px solid #7ad03a;
	}
	td.alp-error{
		border-left: 4px solid #D64E07;
	}
	span.alp-error{
		color:#D64E07;
	}
	td.alp-ok p, td.alp-error p {
		margin: .5em 0;
		padding: 2px;
	}
</style>
<!--HTML结构开始-->
<h3 class="alp-user-profile-heading"><?php _e('订阅信息', 'cwpalp'); ?></h3>
<table class="form-table cwp-alp-data">
	<tr>
		<th><label><?php _e('订阅账户是否激活?', 'cwpalp'); ?></label></th>
		<td class="<?php echo $tr_css ?>"><p><?php echo $cwp_alp_has_actived; ?></p></td>
	</tr>
	<tr>
		<th>
			<label><?php _e('订阅等级', 'cwpalp'); ?></label>
		</th>
		<td  class="<?php echo $tr_css ?>">
			<p><?php echo $cwp_alp_user_level_name; ?></p>
		</td>
	</tr>
	<tr>
		<th>
			<label><?php _e('订阅等级描述', 'cwpalp'); ?></label>
		</th>
		<td  class="<?php echo $tr_css ?>">
			<p><?php echo $cwp_alp_user_level_output; ?></p>
		</td>
	</tr>
	<tr>
		<th>
			<label><?php _e('订阅有效期截至', 'cwpalp'); ?>
			</label></th>
			<td  class="<?php echo $tr_css ?>">
				<p><?php echo $cwp_alp_user_expiration; ?></p>
			</td>
		</tr>
	</table>
	<!--//HTML结构结束-->
	<?php }else{
		return ;
	}
}
add_action( 'show_user_profile', 'coolwp_alp_for_user_profile_page' );
add_action( 'edit_user_profile', 'coolwp_alp_for_user_profile_page' );
/*

///这个被我注释掉的代码段是演示如何存储内容的,如果你觉得需要,请自行添加相应数据库字段。

function coolwp_alp_for_user_profile_page_save( $user_id ) {

  if ( !current_user_can( 'edit_user', $user_id ) )
	return FALSE;

  update_usermeta( $user_id, 'address', $_POST['address'] );
}


add_action( 'personal_options_update', 'coolwp_alp_for_user_profile_page_save' );
add_action( 'edit_user_profile_update', 'coolwp_alp_for_user_profile_page_save' );

*/

/*
	Show notification if ALP(Access Level Pro) is not installed
	父插件不存在时,在Wordpress上方显示一个错误信息。
*/
	if (!function_exists('sl_get_subscription_id')) {
		add_action( 'admin_notices', 'cwpalp_un_check', 5 );

		add_action( 'network_admin_notices', 'cwpalp_un_check', 5 );

		function cwpalp_un_check() {

			echo '<div class="update-nag" ><p>' . __('Coolwp ALP plugin for user profile is an add-on for ALP(Access Level Pro),You need to install<a style="text-decoration: none;" href="http://suoling.net/access-level-pro/" title="More info about ALP »">Access Level Pro</a> to use this add-on.  <a  style="text-decoration: none;" href="http://suoling.net/coolwp-alp-plugin-for-user-profile/">More info »</a>', 'cwpalp') . '</p></div>';
		}
	}

你也可以在这里下载代码包,文件的PHP中已经写上注释了。

这个插件中演示了如何在"我的个人资料"页面添加自定义的HTML元素。实际截图如下:

1.当未安装父插件时,在页面上方提示:

0554-wpdaxue_com

2.当当前用户具有某种付费订阅权限/等级的时候,在“我的个人资料”页面显示:

3.当当前用户没有任何付费订阅权限/等级的时候,在“我的个人资料”页面显示:

倡萌注:如果你之前看过 《WordPress 个人资料添加额外的字段》和 《如何在WordPress后台顶部添加错误提醒信息或升级提醒信息》,那么你应该可以比较容易看明白本文的代码了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
欢迎关注我们的微信公众号:WPDAXUE

coolwp.net

只要是地产商拥护的,我们都反对,除了世界和平与宇宙和谐,但他们貌似就是为了破坏这些为生的。

5 条评论

发表评论

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