2017-07-20 178 views
1

我想問一下,當我在舊的woocommerce版本eshop中使用3000個可變產品時,如果我試圖循環使用這些產品,而我只能獲得300個回報,那怎麼可能呢?WooCommerce產品收集問題

我使用以下代碼來生成產品供稿。

$args = array('post_type' => 'product'); 
$loop = new WP_Query($args); 
while ($loop->have_posts()) : $loop->the_post(); 

此外,變量產品被稱爲變量,因爲它們支持變化,據我所知。這意味着3000個可變產品不是3000個「正常」產品,而是我看到的300個產品是正確的產品數量?

回答

1

您可能正在混合產品(簡單或可變)和產品變體(保留在變量產品中)...您需要在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; 
+0

盧瓦克謝謝您的回答,我會檢查並送還給你! – kn13

+0

我試着修正你的建議,但輸出是一樣的。 在後端儘管有3000個變量產品和81個簡單的產品。所以我想了解我做錯了什麼。 – kn13

+0

謝謝,我添加了@loictheaztec! – kn13