您可能正在混合產品(簡單或可變)和產品變體(保留在變量產品中)...您需要在WP_Query
中顯示產品(簡單和可變),但不是產品變體。
隨着'post_type' => 'product'
,你會同時得到簡單和可變的產品。
缺少的參數是posts_per_page
設置爲-1
。
所以,你的代碼將是:
$args = array('post_type' => 'product', 'posts_per_page' => -1);
$loop = new WP_Query($args);
while ($loop->have_posts()) :
$loop->the_post();
// set all product IDs in an array
$all_product_ids[] = $loop->post->ID;
endwhile;
// Testing: Output the number of products in that query
echo '<p>Products count: ' . count($all_product_ids) . '</p>';
然後你會得到所有你的產品。
可能是你可以嘗試使用查詢WPDB:
## --- THE SQL QUERY --- ##
global $wpdb;
$table_name = $wpdb->prefix . "posts";
$product_ids_array = $wpdb->get_col("
SELECT `ID`
FROM `$table_name`
WHERE `post_status` LIKE 'publish'
AND `post_type` LIKE 'product'
");
## --- TESTING OUTPUT --- ##
// Testing raw output of product IDs
print_r($product_ids_arr);
// Number of products
$products_count = count($product_ids_arr);
echo '<p>Products count: '. $products_count. '</p>';
## --- THE LOOP --- ##
foreach ($product_ids_array as $product_id):
// Get an instance of WP_Product object
$product = new WC_Product($product_id);
// Use the WP_Product methods to get and output the necessary data
endforeach;
盧瓦克謝謝您的回答,我會檢查並送還給你! – kn13
我試着修正你的建議,但輸出是一樣的。 在後端儘管有3000個變量產品和81個簡單的產品。所以我想了解我做錯了什麼。 – kn13
謝謝,我添加了@loictheaztec! – kn13