Wordpress可以在自定义字段中注册日期,但是可以对其进行编辑?

时间:2018-07-15 20:16:32

标签: php wordpress field

我正在尝试向用户配置文件中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 }

1 个答案:

答案 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。因此,上面编写的更新代码可以正常工作。

下面是在我的一个项目中实现的相同代码的屏幕截图。

功能文件: functions.php file

配置文件更新之前 Before the profile has been updated.

配置文件更新后 After the profile has been updated.