サポート » 使い方全般 » ユーザー情報をカスタマイズするには?

  • ユーザー情報に項目を追加する方法をあれこれ調べましたが、想定通りの挙動に関する解説を発見することが出来ず、困っております。

    単純にテキストボックスを加えるだけであれば、下記の様に実装出来ることはわかりました。

    function my_user_meta($x)
    {
    	//項目の追加
    	$x['twitter'] = 'twitter';
    	$x['facebook'] = 'facebook';
    	$x['phone'] = '電話';
    	$x['address'] = '住所';
    
    	return $x;
    }
    add_filter('user_contactmethods', 'my_user_meta', 10, 1);

    しかし、今回は以下の様な入力方法を想定しています。
    テキストボックス
    チェックボックス
    ラジオボタン
    数値
    日付
    画像アップロード

    下記サイトを参考に試みていましたが、チェックボックスなどは更新時、保存されている情報が反映されない様な気がしたため、この際1から作成する方法をどなたかに教えて頂ければ幸いです。
    http://www.webopixel.net/wordpress/136.html

    尚、原則的にはプラグインは利用しないで考えたいと思っています。

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

    (@jim912)

    基本的には、紹介されている記事の方法にて実装可能です。

    チェックボックスは、チェックが入ってないときに、データが存在しなくなるため、私は、チェックボックスの直前に同一name属性のhidden input を配置したりしています。

    また、画像アップロードの実装については、以下が詳しいです。

    WordPress 3.5の新メディアアップローダーを自作プラグインやテーマに組み込む。

    ありがとうございます。

    落ち着いてやってみたところ実装出来ました。

    以下、拙いコードかと思いますが、掲載いたします。

    add_action( 'edit_user_profile', 'add_profile_fields' );
    function add_profile_fields( $user ) {
    ?>
    	<h3>追加情報</h3>
    	<table class="form-table">
    		<tr>
    			<th>日付</th>
    			<td>
    				<input type="date" name="date" value="<?php echo esc_attr( get_the_author_meta( 'date', $user->ID ) ); ?>">
    			</td>
    		</tr>
    		<tr>
    			<th>数値</th>
    			<td>
    				<input type="number" name="number" value="<?php echo esc_attr( get_the_author_meta( 'number', $user->ID ) ); ?>">
    			</td>
    		</tr>
    		<tr>
    			<th>チェックボックス</th>
    			<td>
    				<input type="checkbox" name="checkbox" value="選択肢1" <?php if(get_the_author_meta( 'checkbox', $user->ID )=="選択肢1"){echo "checked=\"checked\"";}?>>選択肢1
    				<input type="checkbox" name="checkbox" value="選択肢2" <?php if(get_the_author_meta( 'checkbox', $user->ID )=="選択肢2"){echo "checked=\"checked\"";}?>>選択肢2
    			</td>
    		</tr>
    		<tr>
    			<th>テキスト</th>
    			<td>
    				<input type="text" name="text" value="<?php echo esc_attr( get_the_author_meta( 'text', $user->ID ) ); ?>">
    			</td>
    		</tr>
    		<tr>
    			<th>ラジオボタン</th>
    			<td>
    				<input type="radio" name="radio" value="選択肢1" <?php if(get_the_author_meta( 'radio', $user->ID )=="選択肢1"){echo "checked=\"checked\"";}?>>選択肢1
    				<input type="radio" name="radio" value="選択肢2" <?php if(get_the_author_meta( 'radio', $user->ID )=="選択肢2"){echo "checked=\"checked\"";}?>>選択肢2
    			</td>
    		</tr>
        </table>
    <?php
    }
    add_action( 'edit_user_profile_update', 'save_profile_fields' );
    function save_profile_fields( $user_id ) {
        if ( !current_user_can( 'edit_user', $user_id ) ) return false;
        update_usermeta( $user_id, 'date', $_POST['date'] );
        update_usermeta( $user_id, 'number', $_POST['number'] );
        update_usermeta( $user_id, 'checkbox', $_POST['checkbox'] );
        update_usermeta( $user_id, 'text', $_POST['text'] );
        update_usermeta( $user_id, 'radio', $_POST['radio'] );
    }

    画像のアップロードに関して、ご紹介ありがとうございます。

    ネット上のコードをコピペ&ちょっとだけいじる、というレベルの自分にはなかなか応用が難しいですね…

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「ユーザー情報をカスタマイズするには?」には新たに返信することはできません。