欢迎光临
我们一直在努力

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

建站超值云服务器,限时71元/月

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<?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 /* 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.当未安装父插件时,在页面上方提示:

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

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

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

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

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 对倡萌童鞋《WordPress 个人资料添加额外的字段》的补充
分享到: 更多 (0)