我使用的url类似于«wp login。php?操作=注册(&M);role=patient»和«register\\u form»挂钩,用于添加额外输入表单,该表单依赖于如下URL:
add_action(\'register_form\',\'add_extra_role_fields\');
function add_extra_role_fields() {
if (isset($_GET[\'role\'])) { $user_type = $_GET[\'role\']; }
if (isset($user_type) && $user_type == "patient") [...]
if (isset($user_type) && $user_type == "doctor") [...]
Problem: Wordpress在表单验证后将用户重定向到
http://example.com/wp-login.php?action=register 而不是
http://example.com/wp-login.php?action=register&role=patient所有的逻辑都被打破了。
Question: wordpress能否将用户重定向到previos url«?操作=注册(&M);角色=医生»(非默认«?操作=注册»)?
Solution: 谢谢你,简·法布里:)。
if ( isset($_REQUEST[\'role\']) && ( ($_REQUEST[\'role\'] == \'patient\') OR ($_REQUEST[\'role\'] == \'doctor\') ) ) {
add_filter( \'site_url\', \'doctor_site_url\', 10, 4 );
function doctor_site_url( $url, $path, $scheme, $blog_id ) {
if ( \'login_post\' == $scheme ) {
$url .= \'&role=\'.$_REQUEST[\'role\'];
}
return $url;
}
}
最合适的回答,由SO网友:Jan Fabry 整理而成
如果你想把这些信息保存在$_GET
, 您必须修改the form\'s action
parameter URL. 你可以通过site_url
:
add_filter( \'site_url\', \'wpse18418_site_url\', 10, 4 );
function wpse18418_site_url( $url, $path, $scheme, $blog_id )
{
if ( \'login_post\' == $scheme ) {
$url .= \'&role=doctor\'; // Or do this dynamically
}
return $url;
}
但不是总是看着
$_GET
, 这可能是一个解决方案
role
隐藏字段中的字段并检查
$_REQUEST
相反,它将同时包含
$_GET
和
$_POST
.