特定のWooCommerceカテゴリから最新の製品IDを取得しようとしています。何らかの理由で、ページが読み込まれるたびに、私は別の製品IDを取得し、最新のIDは取得しません。ここでWP_Queryはposts_per_page引数を持つタクソノミークエリのランダムIDを返します
はWP_Queryの引数である:
array(
'post_type' => 'product',
'posts_per_page' => 5,
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'a-product-category'
)
),
'orderby' => 'date',
'order' => 'ASC'
)
これは、次のSQLクエリを生成:私が言ったように
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
)
WHERE 1=1
AND (
wp_term_relationships.term_taxonomy_id IN (259,260,262)
)
AND wp_posts.post_type = 'product'
AND (
wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private'
)
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date ASC
LIMIT 0, 5
を、ポストIDが(彼らはしかし適切なカテゴリからのもの)は常に多少異なります返さ。私が理解していることは、このクエリの正しい動作は、指定されたカテゴリから最新の5つの投稿を返すことです。
WordPressまたはプラグインの問題を排除するためにSQLサーバーで直接クエリを実行しましたが、まだランダムなポストIDを取得しています。
tax_queryを削除(wp_term_relationship関連のSQLコマンドを削除)するか、posts_per_pageを-1(LIMIT 0,5を削除)に設定すると、postidの順序が正しいようです。
しかし、これは私の開発サーバー上で動作するはずです。これは、プロダクションサーバ(ホスティングプロバイダとMySQL 5.6.32としてWPengineを使用する)で発生します。
アドバイスはありがたいです、ありがとうございます!