1 回答
TA贡献1845条经验 获得超8个赞
更新:该功能将每天运行 5 次(最多)。
如果您有很多产品,则无法更新所有产品。
每次浏览您的网站时都会运行以下内容,并且每次都会更新定义数量的产品以避免出现问题(它将永远运行,您将删除它):
add_action( 'wp', 'update_products_by_x' );
function update_products_by_x(){
// Get next start time
$start_time = (float) get_option('product_update_start_time');
if ( $start_time <= time() ) {
if ( empty($start_time) || $start_time == 0 ) {
$start_time = time();
}
## ----- SETTINGS (Below) ----- ##
$next_time = $start_time + ( 4.8 * 60 * 60 ); // 5 times à day
$limit = 200; // Fix the number of products to update each time
$offset = (int) get_option('product_update_offset');
// Get products
$products_ids = get_posts( array(
'post_type' => 'product', // or ['product','product_variation'],
'numberposts' => $limit,
'offset' => $offset,
'post_status' => 'publish',
'fields' => 'ids',
) );
$count = count($products_ids);
if( $count > 0 ) {
// Loop through product Ids
foreach ( $products_ids as $product_id ) {
// Get the WC_Product object
$product = wc_get_product($product_id);
$product->save();
}
update_option('product_update_offset', ( $count == $limit ? ( $count + $offset ) : 0 ) );
}
update_option('product_update_start_time', $next_time);
}
}
代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。
- 1 回答
- 0 关注
- 125 浏览
添加回答
举报