teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

エラーが解消したためその部分を削除致しました。

2019/02/27 02:13

投稿

waru
waru

スコア16

title CHANGED
File without changes
body CHANGED
@@ -104,13 +104,4 @@
104
104
  }
105
105
  }
106
106
  }
107
- ```
107
+ ```
108
- その後、CHERRY様のご回答のように修正した結果、次のエラーでした。
109
- ```ここに言語を入力
110
- Warning: in_array() expects parameter 2 to be array,
111
- string given in
112
- /export/user/c/zjp_95167c/live_3798ac/var/wordpress/wp-content/themes/test-child/lib/functions.php
113
- on line 464
114
- ```
115
- スクリーンショットだとこうです。
116
- ![イメージ説明](1f9a921643892be698674029779daf39.jpeg)

5

ご回答についてのエラーを掲載致しました。

2019/02/27 02:13

投稿

waru
waru

スコア16

title CHANGED
File without changes
body CHANGED
@@ -104,4 +104,13 @@
104
104
  }
105
105
  }
106
106
  }
107
- ```
107
+ ```
108
+ その後、CHERRY様のご回答のように修正した結果、次のエラーでした。
109
+ ```ここに言語を入力
110
+ Warning: in_array() expects parameter 2 to be array,
111
+ string given in
112
+ /export/user/c/zjp_95167c/live_3798ac/var/wordpress/wp-content/themes/test-child/lib/functions.php
113
+ on line 464
114
+ ```
115
+ スクリーンショットだとこうです。
116
+ ![イメージ説明](1f9a921643892be698674029779daf39.jpeg)

4

CHERRY様への追記を加筆致しました。

2019/02/27 01:51

投稿

waru
waru

スコア16

title CHANGED
File without changes
body CHANGED
@@ -47,7 +47,7 @@
47
47
  どうすればチェックできるようになるか、原因や対策などを知りたいと思い質問させて頂きました。
48
48
  どうぞ宜しくお願い致します。
49
49
 
50
- ###追記
50
+ ###追記(m6u様へ)
51
51
  m6u様からの追記依頼の件です。
52
52
  チェックボックスを表示している箇所(上記の画像1枚目の箇所)の、webブラウザ上でのhtmlソースになります。
53
53
  ```html
@@ -64,4 +64,44 @@
64
64
  <label><input style="" type="checkbox" name="checkbox" value="check2">check2</label>
65
65
  </div>
66
66
  </div>
67
+ ```
68
+ ###追記(CHERRY様へ)
69
+ CHERRY様からの追記依頼の件です。
70
+ カスタムフィールドを定義している部分のコードになります。
71
+ ```php
72
+ add_action( 'admin_menu', 'add_meta_field' );
73
+ function add_meta_field() {
74
+ add_meta_box( 'checkbox', 'checkbox', 'create_checkbox', 'custom', 'side' );
75
+ }
76
+
77
+ function create_checkbox() {
78
+ $keyname = 'checkbox';
79
+ global $post;
80
+ $get_value = get_post_meta( $post->ID, $keyname, true );
81
+ $data = ['check1', 'check2'];
82
+ wp_nonce_field( 'action-' . $keyname, 'nonce-' . $keyname );
83
+ foreach( $data as $d ) {
84
+ $checked = '';
85
+ if( $d === $get_value ) $checked = ' checked';
86
+ echo '<label><input style="" type="checkbox" name="' . $keyname . '" value="' . $d . '"' . $checked . '>' . $d . '</label>';
87
+ }
88
+ }
89
+
90
+ add_action( 'save_post', 'save_meta_field' );
91
+ function save_meta_field( $post_id ) {
92
+ $custom_fields = [
93
+ 'checkxox',
94
+ ];
95
+ foreach( $custom_fields as $d ) {
96
+ if ( isset( $_POST['nonce-' . $d] ) && $_POST['nonce-' . $d] ) {
97
+ if( check_admin_referer( 'action-' . $d, 'nonce-' . $d ) ) {
98
+ if( isset( $_POST[$d] ) && $_POST[$d] ) {
99
+ update_post_meta( $post_id, $d, $_POST[$d] );
100
+ }else{
101
+ update_post_meta( $post_id, $d, '' );
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
67
107
  ```

3

foreach版を加筆致しました

2019/02/27 01:10

投稿

waru
waru

スコア16

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
  ###該当のソースコード
10
10
  こちらが問題のコードです。
11
11
  ```php
12
- $check_get = esc_html( $_POST['check_get'] );// check1,check2 が入ります
12
+ $check_get = esc_html( $_POST['check_get'] ); // check1,check2 が入ります
13
13
  $check_arr = explode(",", $check_get); // それを配列にします
14
14
  update_post_meta($id, 'checkbox', $check_arr); // チェックできません
15
15
  ```
@@ -20,8 +20,21 @@
20
20
 
21
21
  尚、``$check_arr``$のように配列で渡すという方法はこちらを参考にしたのですが、間違っていますでしょうか?([https://stackoverflow.com/questions/22660822/how-to-save-multiple-checkbox-on-update-post-meta-in-wordpress](https://stackoverflow.com/questions/22660822/how-to-save-multiple-checkbox-on-update-post-meta-in-wordpress))
22
22
 
23
+ ###foreachだと1つだけチェックできる
24
+ ちなみに下記のようにforeachを使うと、check2 だけにチェックが入ります
25
+ ```php
26
+ $check_get = esc_html( $_POST['check_get'] ); // check1,check2 が入ります
27
+ $check_arr = explode(",", $check_get); // それを配列にします
28
+ foreach ($check_arr as $check) {
29
+ update_post_meta($id, 'checkbox', $check); // check2 だけにチェックが入ります
30
+ }
31
+ ```
32
+ 下図のようになります。
33
+ ![イメージ説明](c67f3f018659b2e71cd40f9d1233b90c.png)
34
+
35
+
23
36
  ###ラジオボタンはできる
24
- ちなみにラジオボタンだとできます。
37
+ あとラジオボタンだとできます。
25
38
  ```php
26
39
  $radio_get = esc_html( $_POST['radio_get'] );
27
40
  $radio_add = $radio_get == '' ? 'radio1' : $radio_get;

2

追記のコードの誤字を訂正致しました。

2019/02/27 01:02

投稿

waru
waru

スコア16

title CHANGED
File without changes
body CHANGED
@@ -47,8 +47,8 @@
47
47
  <div class="inside">
48
48
  <input type="hidden" id="nonce-checkbox" name="nonce-checkbox" value="1859407a37">
49
49
  <input type="hidden" name="_wp_http_referer" value="/wp-admin/post.php?post=47&amp;action=edit">
50
- <label><input style="" type="checkbox" name="checkbox" value="comment">check1</label>
50
+ <label><input style="" type="checkbox" name="checkbox" value="check1">check1</label>
51
- <label><input style="" type="checkbox" name="checkbox" value="reply">check2</label>
51
+ <label><input style="" type="checkbox" name="checkbox" value="check2">check2</label>
52
52
  </div>
53
53
  </div>
54
54
  ```

1

追記のご依頼に対応致しました。

2019/02/26 07:09

投稿

waru
waru

スコア16

title CHANGED
File without changes
body CHANGED
@@ -32,4 +32,23 @@
32
32
 
33
33
  ###まとめ
34
34
  どうすればチェックできるようになるか、原因や対策などを知りたいと思い質問させて頂きました。
35
- どうぞ宜しくお願い致します。
35
+ どうぞ宜しくお願い致します。
36
+
37
+ ###追記
38
+ m6u様からの追記依頼の件です。
39
+ チェックボックスを表示している箇所(上記の画像1枚目の箇所)の、webブラウザ上でのhtmlソースになります。
40
+ ```html
41
+ <div id="checkbox" class="postbox ">
42
+ <button type="button" class="handlediv" aria-expanded="true">
43
+ <span class="screen-reader-text">パネルを閉じる: checkbox</span>
44
+ <span class="toggle-indicator" aria-hidden="true"></span>
45
+ </button>
46
+ <h2 class="hndle ui-sortable-handle"><span>checkbox</span></h2>
47
+ <div class="inside">
48
+ <input type="hidden" id="nonce-checkbox" name="nonce-checkbox" value="1859407a37">
49
+ <input type="hidden" name="_wp_http_referer" value="/wp-admin/post.php?post=47&amp;action=edit">
50
+ <label><input style="" type="checkbox" name="checkbox" value="comment">check1</label>
51
+ <label><input style="" type="checkbox" name="checkbox" value="reply">check2</label>
52
+ </div>
53
+ </div>
54
+ ```