我正在使用以下插件的Woocommerce网站:https://docs.woothemes.com/document/woocommerce-order-delivery/(“WooCommerce订单发送”)
该插件现在显示在checkout_shipping部分的计费字段下的Checkout页面上,我试图通过挂钩函数将此位置更改为checkout_order_review部分。
但我似乎无法让它发挥作用。
我的函数中的代码.php:
function action_woocommerce_checkout_shipping( $instance ) {
global $woocommerce;
if ( is_checkout() && $woocommerce->cart->needs_shipping() ) {
echo 'Hi World!';
if ( wc_od() ){
echo 'Found wc_od function';
}
remove_action( 'woocommerce_checkout_shipping', 'checkout_content' );
}
};
// add the action
add_action( 'woocommerce_checkout_shipping', 'action_woocommerce_checkout_shipping' );
我在这段代码背后的想法是删除了检索插件模板的'checkout_content'函数,然后将操作添加到woocommerce_checkout_order_review
函数中,以便在订单查看部分中显示它。
但我的remove_action似乎不起作用。
插件中添加checkout_content操作的代码:
protected function __construct() {
// WP Hooks.
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
// WooCommerce hooks.
add_action( 'woocommerce_checkout_shipping', array( $this, 'checkout_content' ), 99 );
add_action( 'woocommerce_checkout_process', array( $this, 'validate_delivery_date' ) );
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_order_meta' ) );
// Delivery date validation hooks.
add_filter( 'wc_od_validate_delivery_date', array( $this, 'validate_delivery_day' ), 10, 2 );
add_filter( 'wc_od_validate_delivery_date', array( $this, 'validate_minimum_days' ), 10, 2 );
add_filter( 'wc_od_validate_delivery_date', array( $this, 'validate_maximum_days' ), 10, 2 );
add_filter( 'wc_od_validate_delivery_date', array( $this, 'validate_no_events' ), 10, 2 );
}
有人可能会推动我朝着正确的方向前进吗? 我做错了吗?或者有更好的方法来实现这一目标吗?
答案 0 :(得分:1)
你有两个问题。
首先,您需要在删除操作时指定执行优先级,或者至少在默认值为10时执行此操作。在您的情况下,执行优先级为99.
其次,checkout_content()
是一个类函数,而不是一个独立的函数,因此你需要在函数引用中指定它。
因此,您的remove_action
代码行将是:
remove_action( 'woocommerce_checkout_shipping', array( $the_class_variable, 'checkout_content' ), 99 );
其中$the_class_variable
是包含该__construct()
函数的类的实例。你如何引用它取决于如何在插件中实例化类。
您可以阅读有关实例化类的不同方法以及http://jespervanengelen.com/different-ways-of-instantiating-wordpress-plugins/处的相应remove_action
您可以在https://codex.wordpress.org/Function_Reference/remove_action
中了解remove_action
这个内容