質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1009閲覧

WordPress:ユーザー情報にチェックボックス項目を追加したい

teratail_siw

総合スコア19

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/10/02 08:18

WordPressのユーザー情報にチェックボックス項目を追加する際、複数選択が反映されません。
下記コードの場合、追加-Aと追加-Cにチェックを入れても追加-Cしかcheckedが付与されません。

複数選択を反映させるためにはどのようにしたらよいでしょうか。

テキストフィールドやラジオボタンの場合は複数選択ではないので問題なく実装できました。

PHP

1//ユーザーのプロフィール情報に項目を追加 2function set_user_profile($bool) { 3 global $profileuser; 4 5 echo '<tr><th><label for="user_tuika">追加</th><td>'; 6 echo '<input type="checkbox" name="user_tuika" value="追加-A"'.(($profileuser->user_tuika == '追加-A') ? ' checked' : '').'>追加-A '; 7 echo '<input type="checkbox" name="user_tuika" value="追加-B"'.(($profileuser->user_tuika == '追加-B') ? ' checked' : '').'>追加-B '; 8 echo '<input type="checkbox" name="user_tuika" value="追加-C"'.(($profileuser->user_tuika == '追加-C') ? ' checked' : '').'>追加-C'; 9 echo '</td></tr>'; 10 11 return $bool; 12} 13add_action('show_password_fields', 'set_user_profile'); 14 15//更新 16function update_user_profile($user_id, $old_user_data) { 17 if ( isset( $_POST['user_tuika'] ) && $old_user_data->user_tuika != $_POST['user_tuika'] ) { 18 $user_tuika = sanitize_text_field( $_POST['user_tuika'] ); 19 $user_tuika = wp_filter_kses( $user_tuika ); 20 $user_tuika = _wp_specialchars( $user_tuika ); 21 update_user_meta( $user_id, 'user_tuika', $user_tuika ); 22 } 23} 24add_action('profile_update', 'update_user_profile', 10, 2); 25 26//ユーザーを削除したらユーザーメタ情報も削除 27function delete_user_profile($user_id){ 28 delete_user_meta($user_id, 'user_tuika'); 29} 30add_action('delete_user', 'delete_user_profile');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

下記のように書き換えると配列で受け取れます。もしくはnameを全部違うものにするかどちらかです。

HTML

1name="user_tuika" 23name="user_tuika[]"

【$_GET, $_POSTなどを受け取る際の処理】
https://qiita.com/mpyw/items/2f9955db1c02eeef43ea#指定した値に限定して1次元配列を強制する

投稿2018/10/02 09:55

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratail_siw

2018/10/02 10:20

早速のご回答ありがとうございます。 name="user_tuika" ↓ name="user_tuika[]" に変更して、複数チェックを試みたのですが全てのチェックボックスにおいてcheckedがつきません。 配列で登録はされたがchecked付与の書き方もこのままではまずい。ということなのでしょうか。 (($profileuser->user_tuika == '追加-A') ? ' checked' : '')
teratail_siw

2018/10/03 09:40

はい、比較の仕方がわかりません。 参考ページを拝見させていただきましたが、私の知識不足ゆえに今回の件にどのように活用して良いのか理解するに至りませんでした。 せっかくご教授いただいたのに申し訳ありません。 もう少し勉強してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問