WooCommerce产品收集问题

时间:2017-07-20 13:56:44

标签: php wordpress woocommerce product

我想问一下,当我在一个旧的woocommerce版本eshop中拥有3000个可变产品时,怎么可能呢?当我试图循环它们时,我只得到300回报。

我使用以下代码生成产品Feed。

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

此外,变量产品被称为变量,因为它们支持我所理解的变化。这意味着3000个变量产品不是3000"正常"产品,而我看到的300是正确的数量?

1 个答案:

答案 0 :(得分: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;