WordPressのプラグイン、Post Types Order を使用している場合、例えばメインの表示ではカスタム順で並べつつ、それ以外の一覧では投稿日順にソートしたいといったケースが考えられます。
しかし、tax_query を使用している場合、意図した通りにソートされない問題が発生しました。そのため、解決策を忘備録として残しておきます。
以下のように設定します。
$query = new WP_Query([
'post_type' => 'custom_post',
'posts_per_page' => 4,
'orderby' => 'date',
'order' => 'DESC',
'ignore_custom_sort' => true,
'tax_query' => [
[
'taxonomy' => 'custom_taxonomy',
'field' => 'id',
'terms' => 3,
'include_children' => true,
],
],
]);
ignore_custom_sort
=> true を指定することで、Post Types Order のカスタムソートを無視し、指定した orderby のルールに従ってソートされるようになります。
今回は 'orderby' => 'date', 'order' => 'DESC' なので、記事は投稿日が新しい順に表示されます。
この方法を使えば、用途に応じてカスタムソートと投稿日順を使い分けることが可能です。