用戶在站內(nèi)注冊(cè)并登錄你的Wordpress網(wǎng)站后,如果他可以來到后臺(tái),不管他是什么角色(role),都會(huì)在后臺(tái)左側(cè)菜單看到“我的個(gè)人資料”這個(gè)菜單項(xiàng),點(diǎn)擊后,可以進(jìn)入該頁面。
WP大學(xué)的倡萌童鞋寫了一篇文章:《WordPress 個(gè)人資料添加額外的字段》,我是搜索特定關(guān)鍵詞edit_user_profile+show_user_profile找到這個(gè)頁面的,我就就一個(gè)自己插件的限定條件免費(fèi)組件寫一篇小文章,算是對(duì)這篇文章的擴(kuò)展吧!
任何通過WordpressAPI實(shí)現(xiàn)的數(shù)據(jù)存取,都應(yīng)該考慮
- 如何存?
- 如何取?
- 取出數(shù)據(jù)后如何顯示?
這三個(gè)問題,你可能覺得我說的有點(diǎn)兒?jiǎn)拢冒桑粏铝耍苯由洗a:
<?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 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 ) {
/*
判斷所需的父插件是否存在,判斷依據(jù)是父插件中的一個(gè)函數(shù)是否存在,如果存在,就怎么著...
*/
if(function_exists('sl_get_subscription_id')){
$user_ID = get_current_user_id();
/*
獲取當(dāng)前用戶ID,然后判斷該用戶是否處在付費(fèi)訂閱有效期內(nèi),如果是,那么就怎么著...
*/
if(sl_is_active( $user_ID ) && sl_is_paid_user($user_ID)){
$cwp_alp_has_actived ='是';
//獲取某用戶的訂閱等級(jí)ID
$cwp_alp_user_level = sl_get_subscription_id( $user_ID );
//獲取該用戶訂閱等級(jí)信息
$cwp_get_level_info=sl_get_subscription_details( absint($cwp_alp_user_level ));
//該用戶訂閱等級(jí)名稱
$cwp_alp_user_level_name =$cwp_get_level_info->name;
//該用戶訂閱等級(jí)描述
$cwp_alp_user_level_des =$cwp_get_level_info->description ;
//該用戶訂閱等級(jí)周期的數(shù)字部分
$cwp_alp_user_level_duration_num =$cwp_get_level_info->duration ;
//該用戶訂閱等級(jí)周期的單位部分
$cwp_alp_user_level_duration_unit =$cwp_get_level_info->duration_unit;
//該用戶訂閱等級(jí)是否激活
$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= __('訂閱等級(jí):', 'cwpalp').'<span style="color:green"> '.$cwp_alp_user_level_des.'</span> ,'.__('權(quán)限等級(jí)為:', 'cwpalp').' <span style="color:green">'.$cwp_alp_user_access_level.'</span>; '.__('時(shí)長(zhǎng):', 'cwpalp').':<span style="color:green">'.$cwp_alp_user_level_duration_num.__($cwp_alp_user_level_duration_unit,'cwpalp').'</span> . ';
$tr_css='alp-ok';
/*
如果當(dāng)前用戶不出在有效的付費(fèi)訂閱期內(nèi),那么,就怎么著...
*/
}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寫在這里了,就不單獨(dú)建個(gè)文件enqueue了,算是減少一個(gè)http請(qǐng)求吧。
-->
<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結(jié)構(gòu)開始-->
<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('訂閱等級(jí)', '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('訂閱等級(jí)描述', '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結(jié)構(gòu)結(jié)束-->
<?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' );
/*
///這個(gè)被我注釋掉的代碼段是演示如何存儲(chǔ)內(nèi)容的,如果你覺得需要,請(qǐng)自行添加相應(yīng)數(shù)據(jù)庫字段。
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
父插件不存在時(shí),在Wordpress上方顯示一個(gè)錯(cuò)誤信息。
*/
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;" title="More info about ALP ?">Access Level Pro</a> to use this add-on. <a style="text-decoration: none;" >More info ?</a>', 'cwpalp') . '</p></div>';
}
}
你也可以在這里下載代碼包,文件的PHP中已經(jīng)寫上注釋了。
這個(gè)插件中演示了如何在”我的個(gè)人資料”頁面添加自定義的HTML元素。實(shí)際截圖如下:
1.當(dāng)未安裝父插件時(shí),在頁面上方提示:

2.當(dāng)當(dāng)前用戶具有某種付費(fèi)訂閱權(quán)限/等級(jí)的時(shí)候,在“我的個(gè)人資料”頁面顯示:

3.當(dāng)當(dāng)前用戶沒有任何付費(fèi)訂閱權(quán)限/等級(jí)的時(shí)候,在“我的個(gè)人資料”頁面顯示:

倡萌注:如果你之前看過 《WordPress 個(gè)人資料添加額外的字段》和 《如何在WordPress后臺(tái)頂部添加錯(cuò)誤提醒信息或升級(jí)提醒信息》,那么你應(yīng)該可以比較容易看明白本文的代碼了。






貌似我截錯(cuò)了
截圖的確錯(cuò)了,希望能提交正確的圖片給我
好的
已發(fā)站內(nèi)信
暫時(shí)還用不上。