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

質問編集履歴

4

再追記

2021/02/23 09:10

投稿

NNC
NNC

スコア22

title CHANGED
File without changes
body CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
  よろしくお願いします。
64
64
 
65
- ### 【追記】
65
+ ### 【追記
66
66
  参考URLでは、カスタムフィールドで行っていたので、
67
67
 
68
68
  ・おすすめ(sort_pickup)
@@ -124,4 +124,46 @@
124
124
  ソートの切り替えができれば問題はないと思っておりますので、
125
125
  お知恵貸して頂ければ幸いです。
126
126
 
127
- よろしくお願いします。
127
+ よろしくお願いします。
128
+
129
+ ### 【追記2】
130
+ 頂いた参考サイトを元に、
131
+ 試行錯誤しながら下記のようにしてみましたが
132
+ 切り替え用のセレクトボックスでソートを切り替えを行った所、
133
+ 一旦は並び替わるようになしましたが、再度他のソートにした所、
134
+ 1回目に切り替えた並び順から変更されない状態になりました。
135
+ ```
136
+ // おすすめ
137
+ $walk_time = array(
138
+ 'post_type' => 'post',
139
+ 'tax_query' => array(
140
+ array(
141
+ 'taxonomy' => 'walk_time',
142
+ 'field' => 'slug',
143
+ ),
144
+ ),
145
+ );
146
+ $walk_time_query = new WP_Query( $walk_time );
147
+ // 徒歩
148
+ $walk_time = array(
149
+ 'post_type' => 'post',
150
+ 'tax_query' => array(
151
+ array(
152
+ 'taxonomy' => 'walk_time',
153
+ 'field' => 'slug',
154
+ ),
155
+ ),
156
+ );
157
+ $walk_time_query = new WP_Query( $walk_time );
158
+ // 値段
159
+ $max_price = array(
160
+ 'post_type' => 'post',
161
+ 'tax_query' => array(
162
+ array(
163
+ 'taxonomy' => 'max_price',
164
+ 'field' => 'slug',
165
+ ),
166
+ ),
167
+ );
168
+ $max_price_query = new WP_Query( $max_price );
169
+ ```

3

再検証の追記及びタイトルを一部変更

2021/02/23 09:10

投稿

NNC
NNC

スコア22

title CHANGED
@@ -1,1 +1,1 @@
1
- 【Wordpress】検索結果にタクソノミーによるソート切り替え機能(一覧の並び替え機能)を設置したい。
1
+ 【Wordpress】検索結果にタクソノミーまたはACFの値によるソート切り替え(一覧の並び替え)を設置したい。
body CHANGED
@@ -60,4 +60,68 @@
60
60
  この方法を行う上で『ここをこうすれば良い』
61
61
  または、別の方法などでも結構ですので、ご教授頂ければ幸いです。
62
62
 
63
+ よろしくお願いします。
64
+
65
+ ### 【追記】
66
+ 参考URLでは、カスタムフィールドで行っていたので、
67
+
68
+ ・おすすめ(sort_pickup)
69
+ ・徒歩(sort_walktime)
70
+ ・値段(sort_maxprice)
71
+
72
+ このようにフィールドを作りfunctions.phpに
73
+ ```
74
+ // 並び替え条件パラメータを追加
75
+ function add_sort_query_vars( $public_query_vars ) {
76
+ $public_query_vars[] = 'sort';
77
+ return $public_query_vars;
78
+ }
79
+ add_filter( 'query_vars', 'add_sort_query_vars' );
80
+ // 並び替え処理を設定
81
+ function change_posts_per_page( $query ){
82
+ if($query->is_search()){
83
+ if( !empty($_GET['sort']) ){
84
+ if( $_GET['sort'] == 'RENT_DESC' ){
85
+ $query->set( 'orderby', array( 'sort_maxprice' => 'DESC') );
86
+ }elseif( $_GET['sort'] == 'RENT_ASC' ){
87
+ $query->set( 'orderby', array( 'sort_walktime' => 'ASC' ) );
88
+ }else{
89
+ $query->set( 'orderby', array( 'sort_pickup' => 'DESC' ) );
90
+ }
91
+ }
92
+ }
93
+ }
94
+ add_action( 'pre_get_posts', 'change_posts_per_page' );
95
+ ```
96
+ こちらで試してみましが上手く行かずでしたので、
97
+ ```
98
+ // 並び替え条件パラメータを追加
99
+ function add_sort_query_vars( $public_query_vars ) {
100
+ $public_query_vars[] = 'sort';
101
+ return $public_query_vars;
102
+ }
103
+ add_filter( 'query_vars', 'add_sort_query_vars' );
104
+ // 並び替え処理を設定
105
+ function change_posts_per_page( $query ){
106
+ if($query->is_search()){
107
+ if( !empty($_GET['sort']) ){
108
+ if( $_GET['sort'] == 'RENT_DESC' ){
109
+ $query->set( 'orderby', array( get_field('sort_maxprice') => 'DESC') );
110
+ }elseif( $_GET['sort'] == 'RENT_ASC' ){
111
+ $query->set( 'orderby', array( 'get_field('sort_walktime') => 'ASC' ) );
112
+ }else{
113
+ $query->set( 'orderby', array( get_field('sort_pickup') => 'DESC' ) );
114
+ }
115
+ }
116
+ }
117
+ }
118
+ add_action( 'pre_get_posts', 'change_posts_per_page' );
119
+ ```
120
+ このように、get_fieldでも検証してみましたが、
121
+ ソートの切り替えが反映されませんでした。
122
+
123
+ 最終的にはタクソノミーでも、カスタムフィールドでも
124
+ ソートの切り替えができれば問題はないと思っておりますので、
125
+ お知恵貸して頂ければ幸いです。
126
+
63
127
  よろしくお願いします。

2

誤字修正

2021/02/22 18:53

投稿

NNC
NNC

スコア22

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 現在、Wordpressにて検索画面を作成しています。
1
+ 現在、Wordpressにて検索画面を作成しています。
2
2
  その際、検索結果にタクソノミーによるソート切り替え機能を実装したいと思い、
3
3
  多々調べながら、実装を試みていますが適用されずの為、ご相談させて頂きます。
4
4
 

1

誤字修正

2021/02/22 12:54

投稿

NNC
NNC

スコア22

title CHANGED
File without changes
body CHANGED
@@ -9,7 +9,7 @@
9
9
  ・値段(max_price)
10
10
 
11
11
  上記、3つのタクソノミーを作成し
12
- ※()内はスラッグです。
12
+ ※()内はタームです。
13
13
 
14
14
  その後、functions.phpにて
15
15
  ```