質問編集履歴

1

関数に記述忘れがありました

2019/10/09 11:47

投稿

amegahutteruyo
amegahutteruyo

スコア15

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
  ['りんご','ばなな'] → 'りんご|ばなな'