[wp-trac] [WordPress Trac] #35177: Introduce a separate function for the login form action URL

WordPress Trac noreply at wordpress.org
Mon Dec 21 03:34:54 UTC 2015

#35177: Introduce a separate function for the login form action URL
 Reporter:  khag7                   |      Owner:
     Type:  enhancement             |     Status:  new
 Priority:  normal                  |  Milestone:  Awaiting Review
Component:  Login and Registration  |    Version:  4.4
 Severity:  normal                  |   Keywords:
  Focuses:                          |
 See #34925, #35103.

 I have always understood `wp_login_url()` to mean "The url which one can
 visit to use a login form" but not necessarily the url to which the form
 data is posted.

 Previous to 4.4.0 the login form generated by `wp_login_form()` had the
 action hard coded to `wp-login.php`. This made it easy (and not uncommon)
 for users to have `wp_login_url()` filtered to point to a custom page. It
 was also easy for these users to have a shortcode put a login form on that
 page which draws from `wp_login_form()`. They didn't need to worry about
 making their page handle the posted data since the form was hard-coded to
 post the form submission to `wp-login.php`.

 The patch proposed in #34925 fixes the problem outlined there, but doesn't
 fix the bug described here. The desired action is that the function
 `wp_login_url` should not be used to get the url to which the form should
 be submitted. We need another way of determining the url to post the data

 I've written a function, `wp_login_handler_url()` which solves the problem
 here and the problem from the other ticket. Now we can use
 `wp_login_url()` and `wp_login_handler_url()` separately. By default, they
 are going to both be pointing at `wp-login.php`, but users can now filter
 `login_url` while still allowing the login form post data to be sent to

 If we commit this patch, we could (and should) search through core files
 for use of `site_url('wp-login.php')` and instead use either
 `wp_login_handler_url` or `login_url` depending on the circumstance of

 The spirit of the original change was good. We shouldn't have hard-coded
 references to wp-login.php, we should have a function and one place that
 can be filtered. And attempting to use the existing function,
 `wp_login_url()` to get that url was a good idea, but its obvious that two
 separate but similar functions are needed here.

Ticket URL: <https://core.trac.wordpress.org/ticket/35177>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list