awo*_*zal 1 php ajax wordpress checkout woocommerce
在 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();
Run Code Online (Sandbox Code Playgroud)
并添加
'.woocommerce-checkout-shipping-table' => $woocommerce_checkout_shipping_options,
Run Code Online (Sandbox Code Playgroud)
进入 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 );
Run Code Online (Sandbox Code Playgroud)
我看不到在不编辑核心文件的情况下编辑 update_order_review 函数的方法?
由于多种原因,切勿编辑 WooCommerce 核心文件。总有办法把事情做好。
进行您想要的更改比您想象的要容易得多,可以按以下方式完成:
add_filter( 'woocommerce_update_order_review_fragments', 'filter_update_order_review_fragments' );
function filter_update_order_review_fragments( $fragments ){
ob_start();
woocommerce_checkout_shipping_options();
$fragments['.woocommerce-checkout-shipping-table'] = ob_get_clean();
return $fragments;
}
Run Code Online (Sandbox Code Playgroud)
代码位于活动子主题(或活动主题)的functions.php 文件中。它应该有效。