WooCommerce登录重定向不起作用

时间:2017-08-29 作者:Dynomite

我目前正在尝试更改Woocommerce redirect url 仅当用户从特定页面登录时用于登录。因此,首先我在模板页面中尝试了这种方法:

<?php woocommerce_login_form(array(\'redirect\'=>$_SERVER[\'REQUEST_URI\'])); ?>
然后,我看到用户仍然被重定向到默认值(我的帐户),所以我这样使用了登录挂钩:

function share_login_redirect( $redirect ) {
    if( strtr($_SERVER[\'REQUEST_URI\'],array(\'/partage\',\'/share\')) ){
        $redirect = get_site_url().$_SERVER[\'REQUEST_URI\'];
    }
    return $redirect;
}
add_filter( \'woocommerce_login_redirect\', \'share_login_redirect\', 10, 2 );
所有这些技巧对我都不起作用。知道这一点$redirect = "https://mysite/share/?param=xx" 我做错了什么?

2017年8月29日编辑:如果有人遇到了与我相同的问题,则可能有一个插件使用了与你相同的挂钩,并且具有比你更高的优先级,这意味着除非你提高优先级,否则重定向将无法工作。请看下面我的答案。

2 个回复
最合适的回答,由SO网友:Dynomite 整理而成

我发现我的问题是优先权。其他一些插件使用的是1000优先级,所以我在声明挂钩时必须提高优先级。这样做:

add_filter( \'woocommerce_login_redirect\', \'share_login_redirect\', 1100, 2 );
而不是

add_filter( \'woocommerce_login_redirect\', \'share_login_redirect\', 10, 2 );

SO网友:Jeff Mattson

尝试更改strtrstrpos. 然而,我认为你不能给它一个针阵列。您必须为此创建另一个函数。

function strposa($haystack, $needles=array(), $offset=0) {
        $chr = array();
        foreach($needles as $needle) {
                $res = strpos($haystack, $needle, $offset);
                if ($res !== false) $chr[$needle] = $res;
        }
        if(empty($chr)) return false;
        return min($chr);
}
使用此函数,而不是strtr

结束

相关推荐

Login redirect on wp theme

我是stack exchange新手,我有一个问题:在我的网站上,一个WP分类的主题,我有一个设置,当用户点击“联系买家”链接,而该用户没有登录时,登录页面会加载。登录后,页面将重定向到其仪表板。我希望页面重定向到他们打算访问的页面(联系买家)。我看过http Referer和其他一些代码片段,但由于某些原因,我无法让它们与wp admin登录一起工作??此外,我也注意到用户的初始登录以及这可能是个什么问题。任何帮助都将不胜感激。