質問編集履歴
1
関数に記述忘れがありました
test
CHANGED
File without changes
|
test
CHANGED
@@ -76,8 +76,6 @@
|
|
76
76
|
|
77
77
|
$args['post_type'] = 'testpost';
|
78
78
|
|
79
|
-
$words_arr = get_meta_query_search( $search_str, 'or' );
|
80
|
-
|
81
79
|
$args['meta_query'] = array(array(
|
82
80
|
|
83
81
|
array(
|
@@ -122,8 +120,6 @@
|
|
122
120
|
|
123
121
|
カスタムフィールド search_fields に $search_str を含む記事を取得します
|
124
122
|
|
125
|
-
いくつかの箇所で使うため関数化しています
|
126
|
-
|
127
123
|
*/
|
128
124
|
|
129
125
|
function get_meta_query_search( $search_str, $join ){
|
@@ -148,6 +144,80 @@
|
|
148
144
|
|
149
145
|
/*
|
150
146
|
|
147
|
+
検索に使うため、$search_str を配列に分解します
|
148
|
+
|
149
|
+
先頭のシャープを削除し、検索に便利なよう全角半角変換します
|
150
|
+
|
151
|
+
*/
|
152
|
+
|
153
|
+
function my_get_search_arr_from_str( $search_str ){
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
// 入力値を配列にする
|
158
|
+
|
159
|
+
$search_str = mb_convert_kana($search_str, 's');
|
160
|
+
|
161
|
+
$search_arr = preg_split("/[\s]+/", $search_str );
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
// 先頭がシャープの場合は1つだけ削除して配列へ
|
166
|
+
|
167
|
+
$word_arr = [];
|
168
|
+
|
169
|
+
$term_arr = [];
|
170
|
+
|
171
|
+
foreach( $search_arr as $search ){
|
172
|
+
|
173
|
+
$search = preg_replace("/( | )/", "", $search );
|
174
|
+
|
175
|
+
if( mb_substr($search, 0, 1) === '#' || mb_substr($search, 0, 1) === '#' ){
|
176
|
+
|
177
|
+
$search = mb_substr( $search , 1 , strlen($search)-1 );
|
178
|
+
|
179
|
+
if( $search !='' ){
|
180
|
+
|
181
|
+
$word_arr[] = $search;
|
182
|
+
|
183
|
+
}
|
184
|
+
|
185
|
+
}
|
186
|
+
|
187
|
+
else{
|
188
|
+
|
189
|
+
if( $search !='' ){
|
190
|
+
|
191
|
+
$word_arr[] = $search;
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
}
|
196
|
+
|
197
|
+
}
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
// 変換した配列を返す
|
202
|
+
|
203
|
+
$word_arr_convert = [];
|
204
|
+
|
205
|
+
foreach( $word_arr as $word ){
|
206
|
+
|
207
|
+
$word_arr_convert[] = mb_convert_kana($word, 'kvrn');
|
208
|
+
|
209
|
+
$word_arr_convert[] = mb_convert_kana($word, 'KVRN');
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
return $word_arr_convert;
|
214
|
+
|
215
|
+
}
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
/*
|
220
|
+
|
151
221
|
meta_query 検索で REGEXP を使うため $arr を次のように変換します
|
152
222
|
|
153
223
|
['りんご','ばなな'] → 'りんご|ばなな'
|