回答編集履歴

2

追記

2018/02/02 08:42

投稿

退会済みユーザー
test CHANGED
@@ -65,3 +65,79 @@
65
65
  keyとvalが複数になることもあるってことですよね?
66
66
 
67
67
  その場合は`get_post_meta`の第三引数を`false`にして値を配列で受け取り、foreachでループ処理してやると簡単だと思います。
68
+
69
+
70
+
71
+ ----
72
+
73
+ 【追記】
74
+
75
+ 配列で受け取った値をforeachで組み立てる
76
+
77
+ ```PHP
78
+
79
+ $meta_keys = get_post_meta($post->ID, 'key', false);
80
+
81
+ $meta_vals = get_post_meta($post->ID, 'val', false);
82
+
83
+ $meta_array = array('relation' => 'AND');
84
+
85
+ foreach ($meta_keys as $i => $val) {
86
+
87
+ $meta_array[] = array(
88
+
89
+ 'key'=>$val,//絞り込みたいカスタムフィールドキー
90
+
91
+ 'value'=>$meta_vals[$i],
92
+
93
+ 'compare'=>'=',//値と一致する
94
+
95
+ );
96
+
97
+ }
98
+
99
+ var_dump($meta_array);
100
+
101
+ ```
102
+
103
+ 出力結果
104
+
105
+ ```
106
+
107
+ array(3) {
108
+
109
+ ["relation"]=> string(3) "AND"
110
+
111
+ [0]=> array(3) {
112
+
113
+ ["key"]=> string(5) "cyuka"
114
+
115
+ ["value"]=> string(8) "hanba-gu"
116
+
117
+ ["compare"]=> string(1) "="
118
+
119
+ }
120
+
121
+ [1]=> array(3) {
122
+
123
+ ["key"]=> string(7) "wasyoku"
124
+
125
+ ["value"]=> string(6) "gyouza"
126
+
127
+ ["compare"]=> string(1) "="
128
+
129
+ }
130
+
131
+ }
132
+
133
+ ```
134
+
135
+ でこの出来上がった配列を
136
+
137
+ ```
138
+
139
+ 'meta_query' => $meta_array,
140
+
141
+ ```
142
+
143
+ `meta_query`パラメータに指定してあげる

1

追記

2018/02/02 08:42

投稿

退会済みユーザー
test CHANGED
@@ -59,3 +59,9 @@
59
59
  ```
60
60
 
61
61
  で良いのではないでしょうか?
62
+
63
+
64
+
65
+ keyとvalが複数になることもあるってことですよね?
66
+
67
+ その場合は`get_post_meta`の第三引数を`false`にして値を配列で受け取り、foreachでループ処理してやると簡単だと思います。