Opened 10 months ago
Last modified 8 months ago
#51746 new feature request
Add a core wrapper function to retrieve $wp->request
Reported by: | apedog | Owned by: | |
---|---|---|---|
Milestone: | Awaiting Review | Priority: | normal |
Severity: | normal | Version: | |
Component: | General | Keywords: | reporter-feedback |
Focuses: | Cc: |
Description
Feature request: add a core wrapper function to retrieve global $wp->request
.
Core should provide a function wp_get_uri_request()
(or some other naming convention) to reliably get the uri request. And reduce reliance on globals/superglobals.
<?php global $wp; $url = $wp->request;
instead use:
<?php $url = wp_get_uri_request();
Change History (5)
This ticket was mentioned in Slack in #core by chaion07. View the logs.
8 months ago
#3
@
8 months ago
It's usage would be for plugins. Much the same way that home_url()
is used.
I just ran a quick search on a local install and found four plugins that use this pattern $wp->request
for pretty much the same functionality.
Each of these plugins had to involve an internal WordPress object, when they shouldn't have.
Two of them polyfilling a current_url()
function like so:
<?php function current_url(){ global $wp; return home_url( $wp->request ); }
or a more involved solution:
<?php global $wp; return esc_url_raw(add_query_arg($wp->query_string, '', home_url($wp->request)));
The specific use-case I ran into was a toolbar item that was supposed to return to the same page they were called on:
<?php global $wp; ... 'href' => add_query_arg( [ 'action' => 'some_action' ], $wp->request ),
This would read a lot cleaner (and would not require a global $wp
in the method):
<?php add_query_arg( [ 'action' => 'some_action' ], wp_request_uri() )
In much the same way as WordPress provides API like wp_remote_get()
, wp_remote_request()
to be used instead of file_get_contents
or curl
, an API for the current path should be available without having to include globals.
This is very much about not having to access the internal $wp
object. But instead abstracting the request/query.
A current_url()
/request_uri()
(the naming of the function is not at issue here) should be as useful as home_url()
for plugin developers. There is no need to know that the value comes from the $wp
object.
This was discussed in a triage session today. While the function you describe is simple enough it is a property mostly intended to be used internally by WordPress for the most part.
Are you able to provide a little more about the use cases in which you find yourself needing to get the
$wp->request
property? That will help decided whether or not the function and subsequent maintenance is necessary.