【问题标题】:Move shipping options outside WooCommerce checkout order review将运输选项移到 WooCommerce 结帐订单审查之外
【发布时间】:2021-06-14 06:03:44
【问题描述】:

在 woocommerce 结帐时,我想将运输选项移到 woocommerce_order_review 之外,这没问题,但我需要在地址更新时更新它 - WC_AJAX::update_order_review()

我可以通过编辑 woocommerce/includes/class-wc-ajax.php 中的公共静态函数 update_order_review() 来完成这项工作,但我不想编辑核心文件。

有没有办法在我的主题函数文件中更改此函数?我要做的就是添加一个新片段

  ob_start();
  woocommerce_checkout_shipping_options();
  $woocommerce_checkout_shipping_options = ob_get_clean();

并添加

'.woocommerce-checkout-shipping-table' => $woocommerce_checkout_shipping_options,

进入 woocommerce_update_order_review_fragments 数组。

我的主题functions.php中已经有了模板函数

function woocommerce_checkout_shipping_options( ) {
        wc_get_template(
            'checkout/shipping-options.php',
            array(
                'checkout' => WC()->checkout(),
            )
        );
    }
add_action( 'woocommerce_checkout_shipping_option', 'woocommerce_checkout_shipping_options', 10 );

我无法在不编辑核心文件的情况下编辑 update_order_review 函数?

【问题讨论】:

    标签: php ajax wordpress woocommerce checkout


    【解决方案1】:

    出于多种原因,切勿编辑 WooCommerce 核心文件。总有办法把事情做好。

    进行所需的更改比您想象的要容易得多,可以按以下方式进行:

    add_filter( 'woocommerce_update_order_review_fragments', 'filter_update_order_review_fragments' );
    function filter_update_order_review_fragments( $fradments ){
        ob_start();
        woocommerce_checkout_shipping_options();
        $fradments['.woocommerce-checkout-shipping-table'] = ob_get_clean();
    
        return $fradments;
    }
    

    代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2020-10-20
      • 2020-11-01
      • 2021-06-03
      • 2019-01-21
      • 2018-08-28
      • 1970-01-01
      • 2019-10-12
      • 2021-05-07
      • 2019-12-11
      相关资源
      最近更新 更多