编辑帐户-读取和写入MySQL

时间:2015-09-22 作者:theHubi

我有保存到数据库和从数据库读取的用户数据,因为它们都是标准的WordPress字段。

example: $user->user_email

frontend and database

And here\'s the code I have inside the form-edit-account.php:

<p class="form-row form-row-wide">
            <label for="account_uid"><?php _e( \'UID-Nummer\', \'woocommerce\' ); ?></label>
            <input type="text" class="input-text" name="uidnumber" id="uidnumber" value="<?php echo esc_attr( $user->user_uidnumber ); ?>" />
        </p>

Here\'s where I\'m at right now:

<如果通过PHPMyAdmin输入值,则字段不会写入数据库中。从数据库读取值Essentially: Saving the value doesn\'t work/is missing.

Help is greatly appreciated!

<人力资源>

One thing if I might add:

我在网站的另一个部分添加了一个字段,这是我在网上找到的教程。backend user我知道把它放在下面是不对的contact_methods, 但这就是我发现的:

function modify_contact_methods($profile_fields) {
    $profile_fields[\'uidnumber\'] = \'UID-Nummer\';    return $profile_fields;}
    add_filter(\'user_contactmethods\', \'modify_contact_methods\');

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

function save_modified_contact_methods( $profile_fields ) {

    /* Copy and paste this line for additional fields. Make sure to change \'twitter\' to the field ID. */
    update_usermeta( $profile_fields, \'uidnumber\', $_POST[\'uidnumber\'] );
}
尽管看起来add_actions、 代码可以工作并保存数据,但我不知道该去哪里。我在wp_usermeta 桌子

I also do not know how to link those two fields together as I can\'t find the second one\'s database entry.

为了更具体一些,我将functions.php 以及form-edit-account.php. 希望有人能找出问题所在。

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

用户元信息(如配置文件页面上的信息)存储在usermeta 数据库中的表。可以通过挂接到show_user_profileedit_user_profile 动作挂钩。然后,您可以通过挂接到personal_options_updateedit_user_profile_update 操作挂钩具有更新用户元表中新字段的函数,update_user_meta().


首先创建要在配置文件页面上呈现的字段

//display extra profile fields
add_action( \'show_user_profile\', \'extra_profile_fields\' );
add_action( \'edit_user_profile\', \'extra_profile_fields\' );

function extra_profile_fields( $user )
{
    ?>
        <h3>Extra Profile Fields</h3>

        <table class="form-table">
            <tr>
                <th><label for="UID-Nummer"><?php _e( \'UID-Nummer\', \'woocommerce\' ); ?></label></th>
                <td><input type="text" name="uid-nummer" value="<?php echo esc_attr( get_the_author_meta( \'uid-nummer\', $user->ID ) ); ?>" class="regular-text" /></td>
            </tr>
        </table>
    <?php
}
请注意name 属性保存字段时最好使用相同的名称。您可以看到,我们正在将该字段拉入已经使用的值中get_the_author_meta( \'uid-nummer\', $user->ID ).


保存字段

//save extra profile fields
add_action( \'personal_options_update\', \'save_extra_profile_fields\' );
add_action( \'edit_user_profile_update\', \'save_extra_profile_fields\' );

function save_extra_profile_fields( $user_id )
{
    update_user_meta( $user_id,\'uid-nummer\', sanitize_text_field( $_POST[\'uid-nummer\'] ) );
}

使用字段显示字段ui-nummer 您可以使用:

//return the author meta
get_the_author_meta( \'ui-nummer\', $user->ID );

//echo the author meta
the_author_meta( \'ui-nummer\', $user->ID );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请