I am trying to pass a parameter to a WordPress site using a URL - for instance:
www.fioriapts.com/?ppc=1 will be the URL.
I am intending to write a function in the functions.php file but the mechanics of how to extract a parameter in WordPress is beyond me. I am finding a lot of examples on how to add a parameter to a URL using the function add_query_arg() but have found nothing on how to extract a parameter. Thanks in advance for any help.
Marc
4,4393 gold badges40 silver badges59 bronze badges
asked Nov 30, 2012 at 20:23
Why not just use the WordPress get_query_var() function? WordPress Code Reference
// Test if the query exists at the URL if ( get_query_var('ppc') ) { // If so echo the value echo get_query_var('ppc'); }Since get_query_var can only access query parameters available to WP_Query, in order to access a custom query var like 'ppc', you will also need to register this query variable within your plugin or functions.php by adding an action during initialization:
add_action('init','add_get_val'); function add_get_val() { global $wp; $wp->add_query_var('ppc'); }Or by adding a hook to the query_vars filter:
function add_query_vars_filter( $vars ){ $vars[] = "ppc"; return $vars; } add_filter( 'query_vars', 'add_query_vars_filter' );answered Feb 22, 2018 at 15:12
MarcMarc
4,4393 gold badges40 silver badges59 bronze badges
6
When passing parameters through the URL you're able to retrieve the values as GET parameters.
Use this:
$variable = $_GET['param_name']; //Or as you have it $ppc = $_GET['ppc'];It is safer to check for the variable first though:
if (isset($_GET['ppc'])) { $ppc = $_GET['ppc']; } else { //Handle the case where there is no parameter }Here's a bit of reading on GET/POST params you should look at: //php.net/manual/en/reserved.variables.get.php
EDIT: I see this answer still gets a lot of traffic years after making it. Please read comments attached to this answer, especially input from @emc who details a WordPress function which accomplishes this goal securely.
answered Nov 30, 2012 at 20:34
GrambotGrambot
4,2555 gold badges29 silver badges43 bronze badges
8
You can try this function
/** * Gets the request parameter. * * @param string $key The query parameter * @param string $default The default value to return if not found * * @return string The request parameter. */ function get_request_parameter( $key, $default = '' ) { // If not request set if ( ! isset( $_REQUEST[ $key ] ) || empty( $_REQUEST[ $key ] ) ) { return $default; } // Set so process it return strip_tags( (string) wp_unslash( $_REQUEST[ $key ] ) ); }Here is what is happening in the function
Here three things are happening.
- First we check if the request key is present or not. If not, then just return a default value.
- If it is set, then we first remove slashes by doing wp_unslash. Read here why it is better than stripslashes_deep.
- Then we sanitize the value by doing a simple strip_tags. If you expect rich text from parameter, then run it through wp_kses or similar functions.
All of this information plus more info on the thinking behind the function can be found on this link //www.intechgrity.com/correct-way-get-url-parameter-values-wordpress/
answered Feb 20, 2018 at 20:55
briankipbriankip
2,4062 gold badges22 silver badges26 bronze badges
In the call back function, use the $request parameter
$parameters = $request->get_params(); echo $parameters['ppc'];
Suraj Rao
29.1k11 gold badges95 silver badges100 bronze badges
answered May 13, 2019 at 9:49
MohanMohan
3351 gold badge3 silver badges11 bronze badges