如何解决在 wordpress 中,我得到了当前经过身份验证的用户的错误自定义字段值
我在用户个人资料上创建了一个用户自定义表单,其中包含两个信息(“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');
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。