質問編集履歴

3

SQL 追加

2017/02/13 07:46

投稿

minpanpy
minpanpy

スコア16

test CHANGED
File without changes
test CHANGED
@@ -181,3 +181,43 @@
181
181
 
182
182
 
183
183
  なにか心当たりありましたら、ご教示いただければ幸いです。
184
+
185
+
186
+
187
+ ```
188
+
189
+ うまくいかないSQL
190
+
191
+
192
+
193
+ SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND (
194
+
195
+ wp_term_relationships.term_taxonomy_id IN (154)
196
+
197
+ ) AND (
198
+
199
+ wp_postmeta.meta_key = 'hogehoge'
200
+
201
+ ) AND wp_posts.post_type = 'example_a_post_type' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value DESC, wp_posts.post_date ASC LIMIT 0, 50;
202
+
203
+
204
+
205
+ ```
206
+
207
+
208
+
209
+ ```
210
+
211
+ うまくいくSQL
212
+
213
+
214
+
215
+ SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) WHERE 1=1 AND (
216
+
217
+ wp_term_relationships.term_taxonomy_id IN (154)
218
+
219
+ ) AND wp_posts.post_type = 'example_a_post_type' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value DESC, wp_posts.post_date ASC LIMIT 0, 50;
220
+
221
+
222
+
223
+ ```

2

SQL を調べたところ原因が分かりましたが、原因の除去ができません。

2017/02/13 07:45

投稿

minpanpy
minpanpy

スコア16

test CHANGED
File without changes
test CHANGED
@@ -141,3 +141,43 @@
141
141
 
142
142
 
143
143
  ![CPT UIの設定画面](ca446549734fa5bd8c8e0ff6e305e4f7.png)
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ その後、WordPress が生成する SQL を見てみたところ、
152
+
153
+ ```
154
+
155
+ ...中略...
156
+
157
+ ) AND (
158
+
159
+ wp_postmeta.meta_key = 'hogehoge'
160
+
161
+ ) AND wp_posts.post_type = 'example_B_post_type' (以下略)
162
+
163
+ ```
164
+
165
+
166
+
167
+ というSQLになっており、こちらの 'hogehoge' は 他のカスタム投稿A に設定しているもので、B では使っていないものがSQLに入っていることが分かりました。
168
+
169
+
170
+
171
+ MySQL につなぎ、この部分を抜いたSQL を実行すると、求めている結果が得られました。(1歩前進)
172
+
173
+
174
+
175
+ ただ、なぜ使っていないカスタムフィールドが条件に入るのかが分からず、どこを修正すれば良いのか分からず困っています。
176
+
177
+
178
+
179
+ ためしに、hogehoge をAdvanced Custom Fields管理画面上で消してみましたが、SQLは変わらずでした。
180
+
181
+
182
+
183
+ なにか心当たりありましたら、ご教示いただければ幸いです。

1

設定画面のスクショを追加しました。

2017/02/13 07:31

投稿

minpanpy
minpanpy

スコア16

test CHANGED
File without changes
test CHANGED
@@ -137,3 +137,7 @@
137
137
  Custom Post Type UI v1.4.3
138
138
 
139
139
  Custom Post Type Permalinks v2.2.0
140
+
141
+
142
+
143
+ ![CPT UIの設定画面](ca446549734fa5bd8c8e0ff6e305e4f7.png)