在子主题中覆盖WooCommerce公共功能

时间:2014-05-14 20:10:35

标签: php wordpress woocommerce woothemes

在WooComerce文件中 class-wc-form-handler.php 我想在我的子主题中覆盖变量$redirect

的一行

在这种情况下,最佳做法是什么?

类-WC-形式处理程序

public function process_registration() {
   if ( ! empty( $_POST['register'] ) ) {
    ...
    // Redirect
    if ( wp_get_referer() ) {
        $redirect = esc_url( wp_get_referer() );
    } else {

          //$redirect = esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) );
        $redirect = home_url() . $_SERVER["REQUEST_URI"];
    }

    wp_redirect( apply_filters( 'woocommerce_registration_redirect', $redirect ) );
    exit;
}

1 个答案:

答案 0 :(得分:5)

您不需要覆盖任何方法。正如您在wp_redirect处可以看到的那样,有过滤器挂钩。详细了解apply_filters

您可以使用add_filter将自己的自定义过滤器添加到代码woocommerce_registration_redirect

以下是如何做到的:

add_filter( 'woocommerce_registration_redirect', 'my_custom_redirect' );

function my_custom_redirect()
{
    return esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) );
}

将上述代码放在您的子主题functions.php文件中。