回答編集履歴

2

回答に間違いがあったため

2016/04/04 05:41

投稿

manabufukai
manabufukai

スコア700

test CHANGED
@@ -1,4 +1,4 @@
1
- get_post_meta()post_custom()どちらできると思いますが
1
+ get_post_meta()or post_custom()でできると思いますが
2
2
 
3
3
 
4
4
 
@@ -20,13 +20,45 @@
20
20
 
21
21
 
22
22
 
23
- 「チェックボックスがチェックされているかどうか」のデータも本来この配列の中に格納されていると思います。
23
+ ---
24
+
25
+ ### ※ saito.rukaさん回答を受け、当回答に間違いがありましたので修正しました。
26
+
27
+
28
+
29
+ 申し訳ないです、カスタムフィールドへ配列を格納した際の挙動について完全に失念していました。
30
+
31
+ [カスタムフィールドに配列を入れた場合のmeta_queryの記述](http://wood-roots.com/web%E5%88%B6%E4%BD%9C/wordpress-web%E5%88%B6%E4%BD%9C/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AB%E9%85%8D%E5%88%97%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AEmeta_query%E3%81%AE%E8%A8%98)
32
+
33
+ > メタデータに配列を書き込んだ場合シリアライズされて保存される〜正しい結果を取得するためにはvalueにシリアライズ後の値を指定する必要があります。
34
+
35
+
36
+
37
+ また、get_post_meta()の第三引数をfalseにしなければなりませんでしたっけ?
38
+
39
+ と思って調べたら、同じブログに
40
+
41
+ [http://yahss.net/wordpress/1226-array_in_custom_fields/](http://yahss.net/wordpress/1226-array_in_custom_fields/)
42
+
43
+ という記事もありましたね…。
44
+
45
+
46
+
47
+ この記事内にある「チェックボックスは配列になる」のように
48
+
49
+ ここに配列として出てくる値に入っているのがチェックされた項目でしょうか。
50
+
51
+
52
+
53
+
24
54
 
25
55
  一旦、配列の中がどのような情報になっているかをまず知るためにも
26
56
 
27
57
  `var_dump(get_post_meta( $post->ID, 'esArea', false );)`
28
58
 
59
+ `var_dump(get_post_meta( $post->ID, 'esArea', true );)`
60
+
29
- で確認してみられてはいかがでしょうか?
61
+ 両方で確認してみられてはいかがでしょうか?
30
62
 
31
63
 
32
64
 
@@ -72,7 +104,19 @@
72
104
 
73
105
 
74
106
 
75
- 配列の中身が連結されてしまっているので出力がそのようになるのだと思います。
107
+ × 配列の中身が連結されてしまっているので出力がそのようになるのだと思います。
108
+
109
+ => シリアライズされた状態なのでそのような出力
110
+
111
+
112
+
113
+ 追記:フォーラムにこういった質問がありました
114
+
115
+ [カスタムフィールドのチェックボックスの使用(プラグイン不使用)](https://ja.forums.wordpress.org/topic/8942)
116
+
117
+ ここで書いてあるようにunserialize()するとよいと思います。
118
+
119
+
76
120
 
77
121
 
78
122
 
@@ -84,11 +128,11 @@
84
128
 
85
129
  ```ここに言語を入力
86
130
 
87
- if( post_custom('esArea') ) {
131
+ if( get_post_custom('esArea') ) {
88
132
 
89
133
  echo "<ul>\n";
90
134
 
91
- $items = post_custom('esArea');
135
+ $items = unserialize( post_custom('esArea') );
92
136
 
93
137
  foreach($items as $value){
94
138
 
@@ -110,8 +154,10 @@
110
154
 
111
155
  ```
112
156
 
113
- のようにしておくとよいと思います。
157
+ のようにしておくとよいと思います。(※未検証です)
114
158
 
115
159
  ※こちらで行う場合も前もって`$items`の中のデータがどのようになっているか、
116
160
 
117
161
  予め`var_dump()`等で調べてから行うとよいと思います。
162
+
163
+

1

誤字の修正

2016/04/04 05:41

投稿

manabufukai
manabufukai

スコア700

test CHANGED
@@ -15,8 +15,6 @@
15
15
  > と記述すると「Array」と表示されてしまい
16
16
 
17
17
 
18
-
19
- Arrayとは「配列」を意味します。
20
18
 
21
19
  echoやprintなどは配列そのものを出力しようとすると、このようになります。
22
20