在 wordpress 中,我得到了当前经过身份验证的用户的错误自定义字段值
In wordpress, I get wrong custom fields values for current authenticated user
我在用户配置文件上创建了一个用户自定义表单,其中包含两个信息(“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(),它将 return 当前登录的用户 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');
?>
我在用户配置文件上创建了一个用户自定义表单,其中包含两个信息(“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(),它将 return 当前登录的用户 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');
?>