为了账号安全,请及时绑定邮箱和手机立即绑定

Woocommerce:更新所有产品的功能

Woocommerce:更新所有产品的功能

慕慕森 2021-05-19 18:15:46
我的Woocommerce产品有问题。如果我仅更新产品(编辑产品并单击“更新”按钮),而没有任何更改,则此问题已得到解决。我的网站上有大约2000种产品,然后我正在考虑使用function.php文件中的函数进行此操作。应该是这样的,我只需要更新产品的行。function update_all_products(){    // getting all products    $products = get_posts( $args );    // Going through all products    foreach ( $products as $key => $value ) {        // the product ID        $product_id = $value->ID;        // update product        update_post_meta...(NEED HELP HERE)...   } //..end foreach}// fire the functionupdate_all_products();
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

请尝试以下操作,这样每次都会将您的产品更新200次,以避免出现问题 (如果您也有可变产品,则post_typearg将必须为product&product_variation):


 add_action( 'woocommerce_loaded', 'update_products_by_x' );

function update_products_by_x(){

    $limit = 200;


    // getting all products

    $products_ids = get_posts( array(

        'post_type'        => 'product', // or ['product','product_variation'],

        'numberposts'      => $limit,

        'post_status'      => 'publish',

        'fields'           => 'ids',

        'meta_query'       => array( array(

            'key'     => '_sync_updated',

            'compare' => 'NOT EXISTS',

        ) )

    ) );


    // Loop through product Ids

    foreach ( $products_ids as $product_id ) {


        // Get the WC_Product object

        $product = wc_get_product($product_id);


        // Mark product as updated

        $product->update_meta_data( '_sync_updated', true );


        $product->save();

    }

}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。


每次您浏览站点页面时,都会触发该功能。以200倍的速度处理产品更加安全,并且可以避免超时或错误。


您可以将该数字增加到500,例如,将设置$limit为500


查看完整回答
反对 回复 2021-05-28
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信