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

同时更改 WooCommerce 产品类型和更新状态

同时更改 WooCommerce 产品类型和更新状态

PHP
波斯汪 2022-01-24 13:15:25
我有产品、WordPress(最新版本)、WpAllImport Pro(最新版本)和 WooCommerce(最新版本)的 XML 提要,我想定期更新我的产品。为了更新我的产品,我需要用从 XML 中消失的旧产品做一些事情。WPAI 有一个名为“删除文件中不再存在的产品”的选项和一个自定义函数:“function my_is_post_to_delete($is_post_to_delete, $post_id, $import)”现在,问题是我的商店里到处都是外部产品,而对于这种类型的产品,我没有库存。我需要将产品类型从外部更改为简单,然后更新他的库存,然后他的状态为“缺货”。我有以下代码:<?phpfunction my_is_post_to_delete( $is_post_to_delete, $post_id, $import ) {    if ( $import->id == 2 ) {        $product = wc_get_product( $post_id );        $sku = $product->get_sku();        wp_set_object_terms($post_id, 'simple','product_type');        update_post_meta($post_id, '_manage_stock', 'yes');        //$product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );        // Get an instance of the WC_Product object        //$product = new WC_Product( $product_id );        // Get product stock quantity and stock status        //$stock_quantity = $product->get_stock_quantity();        //$stock_status   = $product->get_stock_status();        // Set product stock quantity (zero) and stock status (out of stock)        //$product->set_stock_quantity();        //$product->save();        $woocmmerce_instance = new WC_Product( $post_id );        $new_quantity=wc_update_product_stock( $woocmmerce_instance, $quantity);        $product->set_stock_status('outofstock');        // Save the data and refresh caches        $product->save();        //file_put_contents(get_home_path() .'/result.stef', $product->get_sku().'\n' );        return false;    }}add_filter( 'wp_all_import_is_post_to_delete', 'my_is_post_to_delete', 10, 3 );?>最后一点:我想“而不是删除我的产品”以使它们缺货。
查看完整描述

2 回答

?
白猪掌柜的

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

您是否尝试过更新变体缓存?

update_post_meta( $product_id, '_stock_status', wc_clean( 'outofstock' ) );

wp_set_post_terms( $product_id, 'outofstock', 'product_visibility', true );

wc_delete_product_transients( $product_id );


查看完整回答
反对 回复 2022-01-24
?
慕森卡

TA贡献1806条经验 获得超8个赞

<?php


function my_is_post_to_delete( $is_post_to_delete, $post_id, $import ) {


    // Set the ID of your import

    if ( $import->id == 2 ) {


        $product = wc_get_product( $post_id );

        $sku = $product->get_sku();


        // Change product type to simple

        wp_set_object_terms($post_id, 'simple','product_type');


        // Make the product stock manageable

        update_post_meta($post_id, '_manage_stock', 'yes');


        // Set the product quantity to 0

        $product->set_stock_quantity();


        // Update the product status to Out of stock

        update_post_meta( $post_id, '_stock_status', wc_clean( 'outofstock' ) );

        wp_set_post_terms( $post_id, 'outofstock', 'product_visibility', true );


        // Delete cache

        wc_delete_product_transients( $post_id );


        return false;


    }

}

add_filter( 'wp_all_import_is_post_to_delete', 'my_is_post_to_delete', 10, 3 );


?>


查看完整回答
反对 回复 2022-01-24
  • 2 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号