我正在尝试向用户配置文件中wordpress的后端添加自定义字段。我想让它注册日期,然后再注册,以便您可以编辑字段并覆盖它?
我目前已经能够拉出注册的日期,但是需要一种方法来使它刚开始拉出注册的日期值,但是如果修改后会被覆盖?
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) { ?>
<h3>Date Registered</h3>
<?php $userr_ID = get_current_user_id(); ?>
<table class="form-table">
<tr>
<th><label for="date_reg"><?php _e("Date Registered"); ?></label></th>
<td>
<input type="text" name="datereg" id="datereg" value="<?php echo the_author_meta( 'user_registered', $userr_ID ); ?>" class="regular-text" /><br />
</td>
</tr>
</table>
<?php }
答案 0 :(得分:0)
旧的破损代码。
add_action('edit_user_profile_update', 'update_extra_profile_fields');
function update_extra_profile_fields($userID) {
if ( current_user_can('edit_user',$userID) )
update_user_meta($userID, 'user_registered', current_time( 'mysql' ));
}
function extra_user_profile_fields( $user ) {
?>
<h3>Date Registered</h3>
<table class="form-table">
<tr>
<th><label for="date_reg"><?php _e("Date Registered"); ?></label></th>
<td>
<input type="text" name="datereg" id="datereg" value="<?php echo get_the_author_meta( 'user_registered', $user->ID); ?>" class="regular-text" /><br />
</td>
</tr>
</table>
<?php
}
add_action( 'show_user_profile', 'extra_user_profile_fields', 10, 1 );
add_action( 'edit_user_profile', 'extra_user_profile_fields', 10, 1 );
更新的工作代码。
add_action('profile_update', 'update_extra_profile_fields', 10, 2);
function update_extra_profile_fields($userID, $oldData) {
if ( current_user_can('edit_user',$userID) ) {
$updattionDate = date('Y-m-d H:i:s');
$update = update_user_meta($userID, 'user_registered', $updattionDate);
}
}
function extra_user_profile_fields( $user ) {
?>
<h3>Date Registered</h3>
<table class="form-table">
<tr>
<th><label for="date_reg"><?php _e("Date Registered"); ?></label></th>
<td>
<?php
$registrationTime = get_user_meta($user->ID, 'user_registered', true);;
$registrationDate = date('Y-m-d H:i:s', strtotime(date($registrationTime)));
?>
<input type="text" name="datereg" id="datereg" value="<?php echo $registrationDate; ?>" class="regular-text" /><br />
</td>
</tr>
</table>
<?php
}
add_action( 'show_user_profile', 'extra_user_profile_fields', 10, 1 );
add_action( 'edit_user_profile', 'extra_user_profile_fields', 10, 1 );
我注意到我的个人资料更新代码中存在错误,即错误的钩子。正确的用户个人资料更新事件是profile_update
,而不是edit_user_profile_update
即使已修复此错误,您仍将看不到正确的注册日期,因为我们为此调用了错误的功能。我们正在使用get_the_author_meta
检索日期,该日期检索了当前帖子作者的数据。正确的功能是get_user_meta
。因此,上面编写的更新代码可以正常工作。
下面是在我的一个项目中实现的相同代码的屏幕截图。