我正在尝试获取所有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内存限制都会达到?谢谢
答案 0 :(得分:0)
今天我遇到了类似的问题,所以我开始浏览Woocomerce代码。
函数wc_get_products调用
update_post_caches( $query->posts, array( 'product', 'product_variation' ) );
每个产品查询之后。
如果要节省内存,可以使用以下方法清除WP帖子缓存
wp_cache_flush();
循环的每次迭代之后。