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

She*_*LEH 1 php wordpress woocommerce woothemes

在WooComerce文件 -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;
}
Run Code Online (Sandbox Code Playgroud)

Rah*_*zir 5

您不需要覆盖任何方法.正如你可以看到wp_redirect有过滤钩的在线.了解更多apply_filters.

您可以woocommerce_registration_redirect使用自己的自定义过滤器添加到标记add_filter.

以下是如何做到的:

add_filter( 'woocommerce_registration_redirect', 'my_custom_redirect' );

function my_custom_redirect()
{
    return esc_url( get_permalink( wc_get_page_id( 'myaccount' ) ) );
}
Run Code Online (Sandbox Code Playgroud)

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