サポート » プラグイン » wp_usermetaの情報の取り出し

  • 解決済 umioyo

    (@umioyo)


    あまりにバージョンが古いWordPressを使用しているため、リニューアル目的で登録されているユーザー情報を抽出したいと考えています。
    User2CSVというプラグイン(https://yoast.com/wordpress/plugins/users-to-csv/)が入っており、それを使って管理画面からユーザー情報をCSVに書き出せるようになっています。
    登録データに、会社名や住所、電話番号などが含まれているため、それらを抽出したいのですがUser2CSVではwp_usersの情報しか取得できないようなので、改造して抜き出せるようにしたいと考えています。
    該当部分のコードを記します。

    $query = "SELECT ID as UID, user_email, user_url, user_nicename, user_registered FROM $wpdb->users";
    			$results = $wpdb->get_results($query,ARRAY_A);
    			$i=0;
    			if ($table == 'users') {
    				while ($i < count($results)) {
    					$query = "SELECT meta_value FROM ".$wpdb->prefix."usermeta WHERE user_id = ".$results[$i]['UID']." AND meta_key = ";
    					$fnquery = $query . "'first_name'";
    					$results[$i]['first_name'] = $wpdb->get_var($fnquery);
    					$lnquery = $query . "'last_name'";
    					$results[$i]['last_name'] = $wpdb->get_var($lnquery);
    					$nnquery = $query . "'nickname'";
    					$results[$i]['nickname'] = $wpdb->get_var($nnquery);
    					$i++;
    				}
    			}
    			$csv .= arrayToCsvString($results, $sep);

    抜き出したい会社名や住所、電話番号などの情報は、wp_usermetaに入っており、カスタムフィールドのように
    [umeta_id] => 587 [user_id] => 42 [meta_key] => address [meta_value] => ????????
    [umeta_id] => 511 [user_id] => 37 [meta_key] => tel [meta_value] => 090-????-????
    のように配列で格納されています。
    $results[$i][‘UID’]とwp_usermetaのuser_idをマッチさせて$results[$i][***]に格納させていけば良いというのは分かるのですが、PHPおよびmysqlの知識が足りなく、どのように呼び出せばよいのか全然わかりません。

    ちなみに、直接DBから抽出しようとmb_convert_encodingや文字コードなどいろいろ試したのですが、文字化けして2バイト文字がすべて???と表示されてしまい表示できませんでした。
    latinから文字化けせずに表示できる方法があるのであれば、そちらでも結構です。

    このような質問で理解して頂けるかも不安なところですが、ご教示頂ければ幸いです。
    よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    上記コードの中で、first_name、last_name、nicknameの3項目は、usermetaテーブルから取得しています。
    一番簡単に改造するのであれば、$i++; の直前に、

    $fnquery = $query . "'first_name'";
    $results[$i]['first_name'] = $wpdb->get_var($fnquery);

    同様のコードを抜き出したい項目分追加すれば大丈夫かと思います。

    トピック投稿者 umioyo

    (@umioyo)

    ご返答ありがとうございます。
    はい、同じテーブルではあるのですが、first_nameなどと同じようにカラムが用意されているわけではなく、すべて
    [meta_key]と[meta_value]に変数名と値といった体で割り振られているので、それを取り出す方法はないでしょうか。

    モデレーター jim912

    (@jim912)

    first_name は、カラムではなくmeta_keyです。

    トピック投稿者 umioyo

    (@umioyo)

    ご返答ありがとうございます。
    dumpでusermetaを出力したところfirst_nameなど見つからなかったので勘違いしておりました。
    無事に取り出すことができ、解決しました。
    本当に助かりました、ありがとうございます。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「wp_usermetaの情報の取り出し」には新たに返信することはできません。