问题描述
我在用户个人资料上创建了一个用户自定义表单,其中包含两个信息(“Remise”:int 和“modePayement”:string):
add_action( 'show_user_profile','extra_user_profile_fields' );
add_action( 'edit_user_profile','extra_user_profile_fields' );
function extra_user_profile_fields( $user ) {
$defaultSelectValue = esc_attr( get_the_author_Meta( 'modePayement',$user->ID ));
?>
<h3><?PHP _e("informations client","blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="remise"><?PHP _e("Remise"); ?></label></th>
<td>
<input type="text" name="remise" id="remise" value="<?PHP echo esc_attr( get_the_author_Meta( 'remise',$user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?PHP _e("Entrez le % de remise."); ?></span>
</td>
</tr>
<tr>
<th><label for="modePayement"><?PHP _e("Mode de payement"); ?></label></th>
<td>
<select name="modePayement" id="modePayement">
<option value="content" <?PHP if($defaultSelectValue == 'content'){echo("selected");}?>>Content</option>
<option value="30 jours" <?PHP if($defaultSelectValue == '30 jours'){echo("selected");}?>>30 jours</option>
<option value="60 jours" <?PHP if($defaultSelectValue == '60 jours'){echo("selected");}?>>60 jours</option>
</select>
</td>
</tr>
</table>
<?PHP
add_action( 'personal_options_update','my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update','my_save_extra_profile_fields' );
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user',$user_id ) )
return false;
update_userMeta( $user_id,'remise',$_POST['remise'] );
update_userMeta( $user_id,'modePayement',$_POST['modePayement'] );
}
}
function remise_shortCode($atts,$content = null) {
if (is_user_logged_in() && !is_null($content) && !is_Feed() && get_the_author_Meta( 'remise' )) {
$remiseClient = get_the_author_Meta( 'remise',$user->ID );
return '<p id="info_remise_client"> Votre remise est de ' . $remiseClient . '%.</p>';
}
return '';
}
add_shortcode('remiseClient','remise_shortCode');
function modePayement_shortCode($atts,$content = null) {
if (is_user_logged_in() && !is_null($content) && !is_Feed() && get_the_author_Meta( 'remise' )) {
$modePayementClient = get_the_author_Meta( 'modePayement',$user->ID );
return '<p id="info_modePayement_client"> Mode de payement : ' . $modePayementClient . '.</p>';
}
return '';
}
add_shortcode('modePayement','modePayement_shortCode');
我可以显示我的个人管理员帐户的信息,但是当我使用其他 CUSTOMER 假帐户登录时,显示的信息始终是我的,而不是当前已验证客户的信息。
在配置文件字段中,两个帐户的值都可以。
你知道这个问题吗? 谢谢。
解决方法
如何在短代码中获取 $user->ID
? $user
对象在哪里?您可以使用 WP get_current_user_id() 返回当前登录的用户 ID。
<?php
add_action( 'show_user_profile','extra_user_profile_fields' );
add_action( 'edit_user_profile','extra_user_profile_fields' );
function extra_user_profile_fields( $user ) {
$defaultSelectValue = esc_attr( get_the_author_meta( 'modePayement',$user->ID ));
?>
<h3><?php _e("Informations client","blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="remise"><?php _e("Remise"); ?></label></th>
<td>
<input type="text" name="remise" id="remise" value="<?php echo esc_attr( get_the_author_meta( 'remise',$user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e("Entrez le % de remise."); ?></span>
</td>
</tr>
<tr>
<th><label for="modePayement"><?php _e("Mode de payement"); ?></label></th>
<td>
<select name="modePayement" id="modePayement">
<option value="content" <?php if($defaultSelectValue == 'content'){echo("selected");}?>>Content</option>
<option value="30 jours" <?php if($defaultSelectValue == '30 jours'){echo("selected");}?>>30 jours</option>
<option value="60 jours" <?php if($defaultSelectValue == '60 jours'){echo("selected");}?>>60 jours</option>
</select>
</td>
</tr>
</table>
<?php
}
add_action( 'personal_options_update','my_save_extra_profile_fields' );
add_action( 'edit_user_profile_update','my_save_extra_profile_fields' );
function my_save_extra_profile_fields( $user_id ) {
if ( !current_user_can( 'edit_user',$user_id ) )
return false;
update_usermeta( $user_id,'remise',$_POST['remise'] );
update_usermeta( $user_id,'modePayement',$_POST['modePayement'] );
}
function remise_shortCode($atts,$content = null) {
if (is_user_logged_in() && !is_null($content) && !is_feed() && get_the_author_meta( 'remise' )) {
$remiseClient = get_the_author_meta( 'remise',get_current_user_id() );
return '<p id="info_remise_client"> Votre remise est de ' . $remiseClient . '%.</p>';
}
return '';
}
add_shortcode('remiseClient','remise_shortCode');
function modePayement_shortCode($atts,$content = null) {
if (is_user_logged_in() && !is_null($content) && !is_feed() && get_the_author_meta( 'remise' )) {
$modePayementClient = get_the_author_meta( 'modePayement',get_current_user_id() );
return '<p id="info_modePayement_client"> Mode de payement : ' . $modePayementClient . '.</p>';
}
return '';
}
add_shortcode('modePayement','modePayement_shortCode');
?>