pre_get_postsで複数の並び順指定でエラー
-
add_action('pre_get_posts','cs_pre_get_posts'); function cs_pre_get_posts($query) { if (is_admin() || !$query->is_main_query()) { return; } if (!lightning_is_woo_page() && !is_singular() && !is_search() && !is_404()) { $meta_query_args = array( 'relation' => 'OR', 'exists' => array( 'key' => 'プラン', 'compare' => 'EXISTS', ), 'notexists' => array( 'key' => 'プラン', 'compare' => 'NOT EXISTS', ), ); $query->set('meta_query', $meta_query_args); $query->set( 'orderby', array('exists' => 'desc', 'notexists' => 'desc', 'date' => 'desc') ); } }
上記のコードでカスタムフィールドのプランが保存されている記事を優先的に表示させ、保存されていないものは後ろに回すという表示を行おうとしていますがうまくいきません。
そこで$queryの中身を確認して、SQLクエリを確認し直接phpmyadminから実行すると、下記のエラーが発生しています。
クエリーのエラー (1055): Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'local.wp_postmeta.meta_value' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
sql_mode=only_full_group_byが有効になっていると起こるエラーのようですが、基本的にはオフにしないほうがよいという記事が見つかります。
これはWordPressの仕様として問題ないのでしょうか?
6件の返信を表示中 - 1 - 6件目 (全6件中)
6件の返信を表示中 - 1 - 6件目 (全6件中)
- このトピックに返信するにはログインが必要です。