ฉันสงสัยว่าปัญหาหลักคือการที่คุณควรจะใช้วัตถุมากกว่าWP_Query
get_posts()
ค่าเริ่มต้นในภายหลังจะส่งคืนรายการที่มี post_type เท่านั้นpost
ไม่ใช่ผลิตภัณฑ์
เมื่อได้รับหมวดหมู่ที่มี ID 26 รหัสต่อไปนี้จะส่งคืนเป็นผลิตภัณฑ์ (WooCommerce 3+):
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => '12',
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id', //This is optional, as it defaults to 'term_id'
'terms' => 26,
'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
),
array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'exclude-from-catalog', // Possibly 'exclude-from-search' too
'operator' => 'NOT IN'
)
)
);
$products = new WP_Query($args);
var_dump($products);
ในรุ่นก่อนหน้าของ WooCommerce การมองเห็นจะถูกเก็บเป็นฟิลด์เมตาดังนั้นรหัสจะเป็น:
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => '12',
'meta_query' => array(
array(
'key' => '_visibility',
'value' => array('catalog', 'visible'),
'compare' => 'IN'
)
),
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id', //This is optional, as it defaults to 'term_id'
'terms' => 26,
'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
)
)
);
$products = new WP_Query($args);
var_dump($products);
ที่นี่เราจะส่งคืนเฉพาะผลิตภัณฑ์ที่มองเห็นได้ 12 ต่อหน้าเท่านั้น
ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการกำหนดเป้าหมายหมวดหมู่ได้ที่http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parametersบ่อยครั้งจะมีประโยชน์มากกว่าในการเรียกคืนโดยกระสุนมากกว่า ID!
category
หรือproduct_category
?