如何在用户配置文件中添加字段?例如,国家、年龄等

时间:2016-01-16 作者:Chloe Aus

我对电脑/代码等不太在行。我使用一个插件制作注册表,并在表单中添加了国家、年龄组、性别等。我单击将注册器添加到wordpress用户内容中的选项。但当我尝试时,只有用户名和电子邮件显示在后端的用户部分。。其他字段是否有办法显示在用户部分?

我需要它们来显示统计用途。

3 个回复
SO网友:Arpita Hunka

您需要使用show_user_profile, edit_user_profile, personal_options_update, 和edit_user_profile_update 挂钩。

您可以使用以下代码在用户部分中添加其他字段

Code for adding extra fields in Edit User Section:

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><?php _e("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></label></th>
        <td>
            <input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( \'address\', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></label></th>
        <td>
            <input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( \'city\', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></label></th>
        <td>
            <input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( \'postalcode\', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }
Code for saving extra fields details in database:

add_action( \'personal_options_update\', \'save_extra_user_profile_fields\' );
add_action( \'edit_user_profile_update\', \'save_extra_user_profile_fields\' );

function save_extra_user_profile_fields( $user_id ) {
    if ( empty( $_POST[\'_wpnonce\'] ) || ! wp_verify_nonce( $_POST[\'_wpnonce\'], \'update-user_\' . $user_id ) ) {
        return;
    }
    
    if ( !current_user_can( \'edit_user\', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, \'address\', $_POST[\'address\'] );
    update_user_meta( $user_id, \'city\', $_POST[\'city\'] );
    update_user_meta( $user_id, \'postalcode\', $_POST[\'postalcode\'] );
}
还有一些关于这个主题的博客帖子可能会有所帮助:

SO网友:squarecandy

这个Advanced Custom Fields Pro 插件将允许您向用户配置文件添加字段,而无需任何编码。

SO网友:T.Todua

你最好使用get_user_meta (而不是get_the_author_meta):

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, \'meta_key_name\', false);
}

相关推荐

如何从USERS-edit.php中删除颜色选择器代码

我知道我不应该改变Wordpress的核心。但如果我想在“用户编辑”中使用仪表板用户配置文件页面。php和删除大块代码(如颜色选择器)的方法。从第259行到第336行-我想全部删除。<?php if ( ! ( IS_PROFILE_PAGE && ! $user_can_edit ) ) : ?> <tr class="user-rich-editing-wrap"> <th scope="