WooCommerce循环达到内存限制(wc_get_products)

时间:2018-11-09 11:44:25

标签: php wordpress loops memory woocommerce

我正在尝试获取所有woocommerce产品(6k +),并使用“ wc_get_products”功能检查标题中是否存在关键字。我知道这是一个很大的查询,所以我认为我可以限制“ wc_get_products”函数并循环获取所有产品,但仍然会受到php内存限制

我的代码:

// get the total number of products

$total_products = wp_count_posts( 'product' )->publish;

// divide total number of products with the limit 250 and loop it for this times

for ($i=0; $i < $total_products / 250; $i++) {

    $the_products = wc_get_products(
        array(
            'status' => array(
                'publish'
            ),
            'limit' => 250,
            'page' => $i+1
        )
    );

    foreach ($the_products as $products => $product) {

        if (strpos($product->get_name(), 'keyword') !== false) {
            // do something
        }

    }

}

任何想法,无论我如何降低循环限制,为什么php内存限制都会达到?谢谢

1 个答案:

答案 0 :(得分:0)

今天我遇到了类似的问题,所以我开始浏览Woocomerce代码。

函数wc_get_products调用

      update_post_caches( $query->posts, array( 'product', 'product_variation' ) );

每个产品查询之后。

如果要节省内存,可以使用以下方法清除WP帖子缓存

      wp_cache_flush();

循环的每次迭代之后。