1

I'm using url like «wp-login.php?action=register&role=patient» and «register_form» hook for add extra inputs form which depends on urls like this:

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 redirects user after form validation with error to http://example.com/wp-login.php?action=register instead of http://example.com/wp-login.php?action=register&role=patient and all logic is broken.

Question: Can wordpress redirect user to previos url «?action=register&role=doctor» (not default «?action=register») ?

Solution: Thank you Jan Fabry :).

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; } } 
2
  • Why do you want to do this? Commented May 27, 2011 at 9:56
  • To do different registration pages for different user roles. Commented May 28, 2011 at 7:32

1 Answer 1

1

If you want to keep this information in the $_GET, you will have to modify the form's action parameter URL. You can do this by hooking into 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; } 

But instead of always looking in the $_GET, it might be a solution to save the role field in a hidden field and check $_REQUEST instead - it will contain both $_GET and $_POST.

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.