web-dev-qa-db-ja.com

Wp_usersテーブルのカスタム列を更新するには、wp_update_userを使用してください。

wp_usersテーブルに新しい列を追加しました。今度はwp_update_user()で更新したいのですが、このメソッドはエラーを返しませんが、値は保存されません。 wp_get_current_userは新しい列を返していますが、値は空です。

wp_update_user()は標準のカラムしか扱えないという意味ですか?ドキュメントでそれについて何かを見つけることができませんでした。

ユーザー定義列用のメタキー - 値テーブルを知っていますが、私のシナリオではユーザーテーブルに新しいフィールドがあると便利です。

コードは簡単です:

$user_info = wp_get_current_user();
$user_info->creditBalance = 44;
$user_id = wp_update_user( $user_info ); // doesn't seem to update the creditBalance
1
Bart Juriewicz

WordPressでコアテーブルに列を追加/削除することはお勧めできません。次回の更新でこのテーブルの動作が変更されたり、列が上書きされたりしないという保証はありません。あなたの最善のアプローチはあなたが述べたようにメタデータを使うことです。

しかし、何らかの理由でこれを実行する必要がある場合は、独自のSQLクエリを記述することによって実行できます。

// Get current user's data
$user_info = wp_get_current_user();
// Get its ID
$id = $user_info->ID;
// Set the credit balance
$creditBalance = 44;

// Update the custom column
function update_custom_column( $id, $creditBalance ) {
    global $wpdb;   
    $wpdb->query( 
        $wpdb->prepare( "
            UPDATE $wpdb->users 
            SET creditBalance = %d 
            WHERE ID = %d",
            $creditBalance, 
            $id
        ) 
    );
}

ただし、Databaseを使用するのは面倒であり、危険な場合があります。注意してください。

1
Jack Johansson