从WooCommerce文件中删除操作

时间:2018-03-06 作者:tom84

我有一个woocommerce文件“checkout form.php”。我想通过函数删除以下操作。php

<?php do_action( \'woocommerce_checkout_after_order_review\' ); ?>

</form>

<?php do_action( \'woocommerce_after_checkout_form\', $checkout ); ?>
我在函数中使用了以下代码。php但什么都没有发生:

remove_action( \'woocommerce_checkout_after_order_review\', 10);
remove_action( \'woocommerce_after_checkout_form\', $checkout, 20);
我找不到错误。当我在woocommerce文件中手动删除“actions”时,它会起作用。对于functions.php中的“remove\\u action function”,我没有任何效果。

我的错误在哪里?

3 个回复
SO网友:obiPlabon

首先,您必须了解挂钩是如何工作的,或者更具体地说,是如何工作的。我们使用add_action( $name, $callback ) 注册一个以名称和回调函数作为必需参数的操作挂钩。我们使用do_action( $name ) 要运行已注册的操作挂钩,请使用add_action().

现在,如果我们想删除一个动作挂钩,或者更准确地说是一个注册的动作挂钩,那么我们将使用remove_action( $name, $callback ) 其参数与add_action(). 因此,要删除一个动作,不仅要知道动作名称,还要知道回调函数名称。您应该知道,可以有多个操作具有相同的操作名称。

Example

do_action( \'wp_enqueue_scripts\' ); // Executing action hooks

function op_enqueue_scripts() {
    // ...
}

function op_enqueue_google_fonts() {
    // ...
}

add_action( \'wp_enqueue_scripts\', \'op_enqueue_scripts\' ); // Register an action hook
add_action( \'wp_enqueue_scripts\', \'op_enqueue_google_fonts\' );  // Register another action hook

Remove action hook

remove_action( \'wp_enqueue_scripts\', \'op_enqueue_google_fonts\' );  // Remove an action hook

SO网友:Ravi Patel

您已使用remove\\u action删除特定操作。

因此,您可以找到与此相关的所有操作,并使用函数删除这些操作。

    function action_woocommerce_checkout_after_order_review(  ) { 
        // make action magic happen here... 
    }; 

    // add the action 
    add_action( \'woocommerce_checkout_after_order_review\', \'action_woocommerce_checkout_after_order_review\', 10, 0 ); 

    remove_action( \'woocommerce_checkout_after_order_review\',\'action_woocommerce_checkout_after_order_review\',10, 0 );

    function action_woocommerce_after_checkout_form( $wccm_after_checkout ) { 
        // make action magic happen here... 
    }; 

    // add the action 
    add_action( \'woocommerce_after_checkout_form\', \'action_woocommerce_after_checkout_form\', 10, 1 )

  remove_action( \'woocommerce_after_checkout_form\', \'action_woocommerce_after_checkout_form\', 10, 1 ); 
如果需要显示错误日志,请启用配置。php on wp\\u debug with true。

现在您需要删除do\\u action(),因此请重写插件中的“form checkout.php”文件副本,并添加到主题中,然后使用此路径创建目录

“woocommerce/checkout/form checkout.php”

SO网友:Dixita

您必须重写特定操作的返回空白函数。

尝试以下操作:

function remove_woocommerce_checkout_after_order_review( ) { 
    // 
}; 

add_action( \'woocommerce_checkout_after_order_review\', \'remove_woocommerce_checkout_after_order_review\', 10, 0 ); 


function remove_woocommerce_after_checkout_form( ) { 
    // 
}; 

add_action( \'woocommerce_after_checkout_form\', \'remove_woocommerce_after_checkout_form\', 10, 1 )

结束