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

回答編集履歴

6

修正

2020/01/04 02:46

投稿

madone99
madone99

スコア1857

answer CHANGED
@@ -23,8 +23,6 @@
23
23
  ));
24
24
 
25
25
  $result = new WP_Query(
26
-
27
- $result = new WP_Query(
28
26
  [
29
27
  'post_type' => 'property',
30
28
  'paged' => $paged,

5

修正

2020/01/04 02:46

投稿

madone99
madone99

スコア1857

answer CHANGED
@@ -22,6 +22,14 @@
22
22
  )
23
23
  ));
24
24
 
25
- $result = new WP_Query();
25
+ $result = new WP_Query(
26
+
27
+ $result = new WP_Query(
28
+ [
29
+ 'post_type' => 'property',
30
+ 'paged' => $paged,
31
+ 'post_status' => 'publish'
32
+ ]
33
+ );
26
34
  $result->posts = array_unique( array_merge( $q1->posts, $q2->posts ), SORT_REGULAR );
27
35
  ```

4

修正

2020/01/04 02:40

投稿

madone99
madone99

スコア1857

answer CHANGED
@@ -5,23 +5,23 @@
5
5
  `$s = $_GET['s'];`
6
6
 
7
7
  ---
8
+ ## 修正
9
+ sの検索とmeta_queryをarray_mergeしてuniqueしてみてはどうでしょう?
8
10
 
9
- これによって`is_search()`がtrueになりますので
10
- pre_get_postsに検索条件を入れた方がコードの見通しも良くなると思います。
11
-
12
11
  ```php
13
- function myPreGetPosts( $query ) {
14
- if ( is_admin() || ! $query->is_main_query() ){
15
- return;
16
- }
17
- if ( $query->is_search() ) {
12
+ $q1 = new WP_Query( array(
13
+ 'post_type' => 'property',
18
- //検索条件
14
+ 's' => $s
19
- }
20
- }
21
- add_action('pre_get_posts','myPreGetPosts');
22
- ```
15
+ ));
23
16
 
17
+ $q2 = new WP_Query( array(
18
+ 'post_type' => 'property',
19
+ 'meta_query' => array(
20
+ 'relation' => 'AND',
21
+ $metaquerysp,
22
+ )
24
- ---
23
+ ));
25
24
 
26
- 「いや、どうしてもPOSTでやりたい」というのであれば、送信先で
25
+ $result = new WP_Query();
27
- $_POSTからqueryを組み立て、search.phpのようなviewを作れば良いです。
26
+ $result->posts = array_unique( array_merge( $q1->posts, $q2->posts ), SORT_REGULAR );
27
+ ```

3

修正

2020/01/03 05:08

投稿

madone99
madone99

スコア1857

answer CHANGED
@@ -1,4 +1,4 @@
1
- WordPressの検索機能を利用したいのでしたら
1
+ search.phpテンプレートでWordPressの検索機能を利用したいのでしたら
2
2
  サイトルート(https://example.comなど)に対してGET通信でsパラメータを送信する必要があります。
3
3
 
4
4
  なので受け取る時はこうですね。
@@ -24,4 +24,4 @@
24
24
  ---
25
25
 
26
26
  「いや、どうしてもPOSTでやりたい」というのであれば、送信先で
27
- POSTから自分でqueryを組み立てれば良いです。
27
+ $_POSTからqueryを組み立て、search.phpのようなviewを作れば良いです。

2

修正

2020/01/02 13:58

投稿

madone99
madone99

スコア1857

answer CHANGED
@@ -1,10 +1,13 @@
1
1
  WordPressの検索機能を利用したいのでしたら
2
2
  サイトルート(https://example.comなど)に対してGET通信でsパラメータを送信する必要があります。
3
3
 
4
+ なので受け取る時はこうですね。
4
5
  `$s = $_GET['s'];`
5
6
 
7
+ ---
8
+
6
9
  これによって`is_search()`がtrueになりますので
7
- pre_get_postsに検索条件を入れた方が見通しも良くなると思います。
10
+ pre_get_postsに検索条件を入れた方がコードの見通しも良くなると思います。
8
11
 
9
12
  ```php
10
13
  function myPreGetPosts( $query ) {
@@ -16,4 +19,9 @@
16
19
  }
17
20
  }
18
21
  add_action('pre_get_posts','myPreGetPosts');
19
- ```
22
+ ```
23
+
24
+ ---
25
+
26
+ 「いや、どうしてもPOSTでやりたい」というのであれば、送信先で
27
+ POSTから自分でqueryを組み立てれば良いです。

1

修正

2020/01/02 13:21

投稿

madone99
madone99

スコア1857

answer CHANGED
@@ -1,4 +1,19 @@
1
1
  WordPressの検索機能を利用したいのでしたら
2
- index.phpにGETでsパラメータを送信する必要があります。
2
+ サイトルート(https://example.comなど)対してGET通信でsパラメータを送信する必要があります。
3
3
 
4
- `$s = $_GET['s']`
4
+ `$s = $_GET['s'];`
5
+
6
+ これによって`is_search()`がtrueになりますので
7
+ pre_get_postsに検索条件を入れた方が見通しも良くなると思います。
8
+
9
+ ```php
10
+ function myPreGetPosts( $query ) {
11
+ if ( is_admin() || ! $query->is_main_query() ){
12
+ return;
13
+ }
14
+ if ( $query->is_search() ) {
15
+ //検索条件
16
+ }
17
+ }
18
+ add_action('pre_get_posts','myPreGetPosts');
19
+ ```