我希望利用[woocommerce_my_account]短代码在唯一的网页上创建登录和注册表单。
我想将此表单的两个部分重定向到不同的网址。这不应该是全局的,只能是这个独特页面上的表单。
在functions.php中,我添加了
function free_redirect( $redirect ){
if (strpos($_SERVER['REQUEST_URI'], "/unique-page/") !== false){
$redirect = '/new_url/';
return $redirect;
}
}
add_filter('woocommerce_login_redirect', 'free_redirect');
function redirect_register( $redirect ){
if (strpos($_SERVER['REQUEST_URI'], "/unique-page/") !== false){
$redirect = '/new_url/';
return $redirect;
}
}
add_filter('woocommerce_registration_redirect', 'redirect_register');
我遇到的两个问题是:
1)注册仍然没有重定向只是按正常行为转到我的帐户页面
2)它会影响其他登录表单,因为当他们提交时,他们的重定向不会在下一页上产生任何html内容(日志不会告诉我任何关于此的内容但我怀疑它是因为过滤器导致了一些问题,因为我没有正确地结束这些功能。)
P.S。我已经阅读了有关添加隐藏输入字段以附加查询字符串然后使用它而不是request_uri的信息,但我想保持简单和干净。
请告诉我我失踪的内容或是否有更好的选择。
答案 0 :(得分:0)
首先是登录重定向,这段代码将完成你的工作。
function my_login_redirect( $redirect ) {
if ( $_SERVER['REQUEST_URI'] == '/unique-page/' ){
$redirect = '/new_url/';
return $redirect;
}
return $redirect;
}
add_filter('woocommerce_login_redirect', 'my_login_redirect');
它实际上会检查$_SERVER['REQUEST_URI']
到您的/unique-page/
。如果匹配则执行代码,否则它将重定向到默认$redirect
。
注册重定向也会发生同样的事情 -
function redirect_register( $redirect ){
if ( $_SERVER['REQUEST_URI'] == '/unique-page/' ){
$redirect = '/new_url/';
return $redirect;
}
return $redirect;
}
add_filter('woocommerce_registration_redirect', 'redirect_register');
对于你的第三个问题 -
P.S。我已经阅读了有关添加隐藏输入字段以附加查询的信息 字符串,然后使用它而不是request_uri,但我想 保持这简单和干净。
是的,有办法。你可以使用 -
add_action( 'woocommerce_login_form', 'add_redirect_field' );
function add_redirect_field() {
if ( $_SERVER['REQUEST_URI'] == '/unique-page/' ){
echo '<p><input type="hidden" name="redirect-token" value="your-custom-token-for-redirect" /></p>';
}
}
然后使用条件逻辑重定向到您想要的页面。