WordPressのプロフィールに画像項目を追加する

公開日: 

wp1

WordPressでショッピングモールのようなホームページを作成していると、各店舗の情報をどのように管理しようか?と悩むのですが、今回は各店舗にもユーザー権限を与えて、そのユーザープロフィール欄をカスタマイズしようと思いました。

プロフィール欄に各項目を追加する方法をテーマのfunction.phpに記述しました。そのメモを残しておきます。今回のはあくまで、テスト用に書いたコードなので、間違っていたらゴメンナサイ。

まずは連絡先を追加する方法。twiterやFacebookなど。今回はショップの情報なので、電話番号を追加します。

function add_profile_contact( $contactmethods ) {
$contactmethods[“telephone”] = ‘電話番号’;
return $contactmethods;
}
add_filter(‘user_contactmethods’,’add_profile_contact’,11,1);

次に追加した項目が個人設定の欄に、お店のジャンルをプルダウンで選択できるようにしました。

//ジャンルは配列で指定
$aste_ganre = array(“ファッション雑貨”,”インテリア”,”書籍”);
add_action( ‘personal_options’, ‘add_profile_genre’);
// 個別設定エリアに項目追加
function add_profile_genre ($profileuser) {
// ジャンル作成
global $aste_ganre;
$html = ‘<tr><th scope=”row”>ジャンル<span>(必須)</span></th>’;
$html .= ‘<td><select name=”genre”>’;
foreach ($aste_ganre as $val) {
$r = get_user_meta( $profileuser->ID, ‘genre’, true );
$selected = ”;
if ($r == $val) {
$selected = ‘ selected=”selected” ‘;
}
$html .= ‘<option value=”‘ . $val . ‘”‘ . $selected . ‘>’ . $val . ‘</option>’;
}
$html .= ‘</select></td></tr>’;
echo $html;
}
// 個別設定エリアの保存
add_action( ‘personal_options_update’, ‘save_custom_options_fields’ );
function save_custom_options_fields( $user_id ) {
update_user_meta( $user_id, ‘genre’, $_POST[‘genre’] );
}

最後にロゴ画像もプロフィールで管理したかったので、画像をアップロードするためのコードです。

// プロフィール情報以下に設定項目表示
function add_profile_form($bool) {
global $profileuser;

// ロゴ画像
$html .= ‘<tr>’;
$html .= ‘<th scope=”row”>ロゴ画像<span>(必須)</span></th>’;
$html .= ‘<td><input type=”file” name=”shop_logo_img” />’;
$logo_img = get_user_meta( $profileuser->ID, ‘shop_logo_img’, true );
if (!isset($logo_img[‘error’])) {
$logo_img = $logo_img[‘url’];
$html .=  ‘<img src=”‘. $logo_img . ‘” /></td>’;
} else {
$logo_img = $logo_img[‘error’];
$html .=  “$logo_img</td>”;
}
$html .= “</tr>\n”;
echo $html;
return $bool;
}
add_action(‘show_password_fields’, ‘add_profile_form’);

// 登録処理
function update_profile_form($user_id, $old_user_data) {
// ロゴ画像
if (is_uploaded_file($_FILES[‘shop_logo_img’][‘tmp_name’])) {
$logo_img = wp_handle_upload( $_FILES[‘shop_logo_img’] );
update_user_meta( $user_id, ‘shop_logo_img’, $logo_img, get_user_meta( $user_id, ‘shop_logo_img’, true ) );
if (isset($logo_img[‘file’])) {
$filename = $logo_img[‘file’];
$title = explode(‘.’, basename( $filename ) );
$ext = array_pop( $title );
$attachment = array(
‘guid’ => $logo_img[‘url’],
‘post_mime_type’ => $logo_img[‘type’],
‘post_title’ => implode(‘.’, $title ),
‘post_content’ => ”,
‘post_status’ => ‘inherit’
);
$attach_id = wp_insert_attachment( $attachment, $filename );
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
}
}
}
add_action( ‘profile_update’, ‘update_profile_form’, 10, 2 );

add_action(‘user_edit_form_tag’, ‘make_form_accept_uploads’);
function make_form_accept_uploads() {
echo ‘ enctype=”multipart/form-data”‘;
}

コードの中身の説明は端折らせて頂きます。それぞれの関数名などで検索をすると、親切に書いているサイトも見つかると思います。

今回はアップロードするだけだったので、データを表示する方も作成したら、こちらにも、コードを残しておこうと思います。

 

WordPressに関する本はこちら

シェアありがとうございます

  • このエントリーをはてなブックマークに追加
  • Pocket

Your Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  • プロフィール

    みたやんです。様々なWebシステムの開発に携わってきました。ICTに関する困りごとなら何なりとお問い合わせください。

    似顔絵はかでる工房様に作成していただきました。

PAGE TOP ↑