代码之家  ›  专栏  ›  技术社区  ›  oleviolin

如何使用虚拟和可变产品建立Woocmere

  •  0
  • oleviolin  · 技术社区  · 5 年前

    在WooCommerce中,如何将所有产品设置为虚拟?

    显然,这是行不通的:

    function set_virtual(){
        $args = array(
            'post_type'      => 'product',
            'posts_per_page' => -1
            
        );
    
        $loop = new WP_Query( $args );
    
        while ( $loop->have_posts() ) : $loop->the_post();
            //global $product;
            $id=get_the_ID();
            $post=get_post();
            $product=wc_get_product($id);
            $product->set_virtual(true);
            $name=$product->get_name();
            $id=$product.save();
            echo "Product (event): $name ($id) should now be virtual ";
            //But it does not work!!
            
    
        endwhile;
    
        wp_reset_query();
    }
    

    我想用它来设置WooCommerce中的可变产品,这些产品不能在用户界面中设置为虚拟。用于夏令营度假预订、音乐会预订等。如果产品价格可变,“商店”由夏令营/活动的大小固定,但您需要虚拟设置,因为没有产品发货。(WooCommerce中不需要处理步骤——虚拟产品跳过该步骤)

    0 回复  |  直到 5 年前
        1
  •  0
  •   oleviolin    5 年前

    真正的要求不是让产品虚拟化,而是完成订购过程,因为产品库存不是需要发货的实物库存,而是我销售的有限空间。我在WooCommerce找到了以下解决问题的方法。 https://docs.woocommerce.com/document/automatically-complete-orders/

       /**
       * Auto Complete all WooCommerce orders.
      */
       add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
       function custom_woocommerce_auto_complete_order( $order_id ) { 
           if ( ! $order_id ) {
             return;
           }
    
           $order = wc_get_order( $order_id );
           $order->update_status( 'completed' );
       }
    

    请注意: 这个解决方案会解决问题 你们所有的产品 像虚拟产品一样行事。你可以加入主题功能。php,或将其转换为自定义插件