Custom User Profile Fields

时间:2017-06-20 作者:João Varanda

我在wp\\u用户和/wp admin/user中添加了新列。编辑php我添加新字段并将其连接到数据库,因此如果我手动将数据放入数据库,新字段将接收到该数据,但如果我在WordPress站点的新字段中更新或插入数据,则不会更新数据库,并保留我手动放入数据库的相同数据。这个怎么了?非常感谢。

1 个回复
最合适的回答,由SO网友:Cedon 整理而成

你肯定会想用插件来实现这一点。正如其他人所指出的那样,修改WordPress核心文件是一个非常糟糕的主意,因为每次更新都会将其删除,未来的版本可能会更改您正在编辑的内容的位置/功能。您可以通过将其添加到主题的functions.php 文件,但您遇到了与WP Core相同的问题,更新会将其清除。编写插件是您的最佳选择。

假设您想为用户添加一个字段来定义他们最喜欢的颜色。首先要执行以下操作:

function my_extra_author_fields( $user ) { ?>
    <h3>My Extra Author Fields</h3>

    <table class="form-table">
        <tr>
            <th><label for="favorite_color">Favorite Color</label></th>
            <td>
                <input type="text" name="favorite_color" id="favorite_color" class="regular-text" value="<?php esc_attr( get_the_author_meta( \'favorite_color\', $user->ID ) ); ?>" />
                <br />
                <span class="description">Please enter your favorite color</span>
            </td>
        </tr>
    </table>
<?php }

add_action( \'show_user_profile\', \'my_extra_author_fields\' );
add_action( \'edit_user_profile\', \'my_extra_author_fields\' );
这将在表单中为用户配置文件创建新字段,但实际上还不会保存任何内容。接下来是这一部分:

function save_my_extra_author_fields( $user_id ) {

    // Check to see if user can edit this profile
    if ( ! current_user_can( \'edit_user\', $user_id ) )
        return false;

    update_user_meta( $user_id, \'favorite_color\', $_POST[\'favorite_color\'] );
}

add_action( \'personal_options_update\', \'save_my_extra_author_fields\' );
add_action( \'edit_user_profile_update\', \'save_my_extra_author_fields\' );
你需要做一个新的<tr> 元素和update_user_meta() 调用要添加的每个自定义字段。

然后,可以使用访问这些字段的值get_the_author_meta( \'favorite_color\' ) 如果要以编程方式使用返回,例如测试以查看是否设置或使用了收藏夹颜色the_author_meta( \'favorite_color\' ) 简单地重复它。

结束

相关推荐

Display Users and user url's

我需要一些帮助,我有迭代工作,列出wordpress用户,但我也想把他们的名字包装在链接中,似乎无法让用户url工作。。。我什么也没得到。这是我到目前为止所拥有的。。。。您将看到,我正在尝试拉入user\\u url,但它只是返回为nothing。任何帮助都会很好!谢谢<?php $blogusers = get_users( array( \'role\' => \'subscriber\', \'fields\' =&