【问题标题】:Set bookable product base cost programatically in Woocommerce Bookings在 Woocommerce Bookings 中以编程方式设置可预订的产品基础成本
【发布时间】:2018-11-15 19:35:51
【问题描述】:

我正在尝试计算 WooCommerce 可预订产品的基本成本并设法使用以下方法完成它:

    function modify_baseprice() {
       global $post;
       $productid = $post->ID;
       $product = new WC_Product($productid);
       $product_block_price = $product->wc_booking_block_cost;
       $product->wc_booking_cost = ($product_block_price*0.6) + 100;
       $pricing_data = update_post_meta( $productid, '_wc_booking_cost', $product->wc_booking_cost); 
       return $pricing_data; 
   }
   add_action( 'woocommerce_bookings_after_booking_base_cost', 'modify_baseprice', 10, 3 );

它确实正确计算了基本成本,但我需要刷新页面两次才能看到它出现在基本成本字段中。有没有办法让它在第一次保存后出现?

【问题讨论】:

    标签: php wordpress woocommerce product woocommerce-bookings


    【解决方案1】:

    自 Woocommerce 3 发布以来,CRUD objects 已实施。这是WC_Product 对象的情况,也适用于 Woocommerce Bookings 插件。因此,您可以使用可用的 Getter 和 setter 方法,因为属性不再可访问(在大多数情况下)。

    下面的代码使用这种更好的方式(费用在产品中设置,无需刷新页面):

    add_action( 'woocommerce_process_product_meta_booking', 'modify_bookable_product_base_cost', 100, 1 );
    function modify_bookable_product_base_cost( $product_id ){
        // Get an instance of the WC_Product object
        $product = wc_get_product( $product_id );
    
        // We check that we have a block cost before
        if ( $product->get_block_cost() > 0 ){
            // Calculation
            $new_booking_cost = ( $product->get_block_cost() * 0.6 ) + 100;
    
            $product->set_cost( $new_booking_cost ); // Set the new calculated cost in the product
            $product->save(); // Save the product data
        }
    }
    

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

    【讨论】:

    • 您能否解释一下我们是否可以使用类似的东西来控制添加新产品屏幕上的其他项目?例如,如果不是某些用户角色的唯一项目,我想将可预订项目设为默认项目,并隐藏/删除所有非必要选项。由于引入了 CRUD 对象,例如某些过滤器“default_product_type”不再起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2019-10-14
    • 2015-12-09
    • 1970-01-01
    • 2018-07-23
    相关资源
    最近更新 更多