Get url parameter in Wordpress get_query_var() does nothing - wordpress

Wordpress codex says I can access URL parameters using get_query_var() when I register the variable to WP_Query using this code
function add_query_vars_filter( $vars ) {
$vars[] = "i_id";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
https://codex.wordpress.org/Function_Reference/get_query_var
But that doesn't work the URL
https://example.com/contact-form/contact-de/?i_id=12345
doesn't give me any id parameter.
<?php
function add_query_vars_filter( $vars ) {
$vars[] = "i_id";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
$i_id = get_query_var('i_id');
var_dump($i_id);
Always prints string(0) ""
What am I doing wrong here?

Try moving this part to your child theme's functions.php:
function add_query_vars_filter( $vars ) {
$vars[] = "i_id";
return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );
And keep this part in your template:
$i_id = get_query_var('i_id');
var_dump($i_id);

Related

Wordpress url rewrite add_rewrite_rule category

I'm trying to rewrite my urls but I don't know what I'm doing wrong.
I want the page site.ru/product-category/executiv-kresla/?wpf_filter_proizvoditel=dauphin&wpf_fbv=1
looked like site.ru/product-category/executiv-kresla/dauphin.
I made it
add_action('init', 'do_rewrite');
function do_rewrite() {
add_filter( 'query_vars', function( $vars ) {
$vars[] = 'wpf_filter_proizvoditel';
$vars[] = 'wpf_fbv';
return $vars;
} );
add_rewrite_rule('^(product-category/executiv-kresla/)([^/]*)/([^/]*)/?$', 'index.php?pagename=$matches[1]&wpf_filter_proizvoditel=$matches[2]&wpf_fbv=$matches[3]', 'top');
}
but it doesn't work.

Wordpress rewrite url not working on custom template

The URL is:
mywebsite.com/custom/?var1=random_text
and I want
mywebsite.com/custom/random_text
here's the code in my functions.php file:
add_filter( 'query_vars', 'wpse12965_query_vars' );
function wpse12965_query_vars( $query_vars )
{
$query_vars[] = 'var1';
return $query_vars;
}
add_action( 'init', 'wpse12065_init' );
function wpse12065_init()
{
add_rewrite_rule(
'custom(/([^/]+))?/?',
'index.php?pagename=custom&var1=$matches[1]',
'top'
);
}
But it still returns 404 error. What am I doing wrong?
Your code is looking perfect try to add flush_rewrite_rules function.
add_filter( 'query_vars', 'wpse12965_query_vars' );
function wpse12965_query_vars( $query_vars )
{
$query_vars[] = 'var1';
return $query_vars;
}
add_action( 'init', 'wpse12065_init' );
function wpse12065_init(){
add_rewrite_rule(
'custom(/([^/]+))?/?',
'index.php?pagename=custom&var1=$matches[1]',
'top'
);
flush_rewrite_rules();
}

Wordpress custom url rewrite

Is it possible in wordpress to rewrite the following url.
http://www.example.com/aboutus/?city=newyork to http://www.example.com/aboutus/newyork
and then read out the get_query_var('city') , how do i accomplish this within wordpress?
This is the sollution:
add_filter( 'query_vars', 'add_query_vars_filter' );
function add_query_vars_filter( $vars ){
$vars[] = "city";
return $vars;
}
//https://thereforei.am/2011/10/28/advanced-taxonomy-queries-with-pretty-urls/
function eg_add_rewrite_rules() {
global $wp_rewrite;
$new_rules = array(
'aboutus/(.+?)/?$' => 'index.php?page_id=274&city=' . $wp_rewrite->preg_index(1)
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action( 'generate_rewrite_rules', 'eg_add_rewrite_rules' );
echo get_query_var('city');

Wordpress rewrite url with query parameters

I have post with categories based one year, month and date
Categories
2013
May 14
APRIL 10
2012
JUNE 6
I am creating the rewrite urls to particular date categories
by creating the url like category/slug-name/issues/year/month/date
My rewrite url is below
add_action('generate_rewrite_rules', 'past_issue_rewrite_rules');
function past_issue_rewrite_rules( $wp_rewrite ) {
$wp_rewrite->rules = array_merge( array('category/past-issues/issues/(.+)/(.+)/
(.+)/' => 'category/past-issues/?year='.$wp_rewrite->preg_index(1).'&month='.
$wp_rewrite->preg_index(2).'&day='.$wp_rewrite->preg_index(3)),
$wp_rewrite->rules );
}
add_filter( 'query_vars', 'setup_filter_query_vars' );
function setup_filter_query_vars( $query_vars )
{
$query_vars[] = 'year';
$query_vars[] = 'month';
$query_vars[] = 'day';
return $query_vars;
}
when I tried to access the page it is showing page not found.
what is the error?
Is it possible to send the parameters to category.php page
I am not sure. Please let me know if this is wrong.
I found the s0lution by myself and here is the code
function past_issue_rewrite_rules(){
add_rewrite_rule(
'category/past-issues/(\d+)/(\d+)/(\d+)/?$',
'index.php?category_name=past-issues&pyear=$matches[1]&pmonth=$matches[2]&pday=$matches[3]',
'top'
);
}
add_action( 'init', 'past_issue_rewrite_rules' );
add_filter( 'query_vars', 'setup_filter_query_vars' );
function setup_filter_query_vars( $query_vars )
{
$query_vars[] = 'pyear';
$query_vars[] = 'pmonth';
$query_vars[] = 'pday';
return $query_vars;
}

Custom rewrite permalinks WordPress

I have a page template that gets some variables added to the end of the url so I can display data based on what was passed.
ie: mysite.com/search-listins/listing/?address=123+The+Street&mls-number=00000
I need to convert this into a pretty permalink. Somthing like this:
mysite.com/search-listings/listing/123-The-Street OR mysite.com/search-listings/listing/00000-123-The-Street
I tried using this function. But nothing seems to be working. Any thoughts? These are not coming from a custom post type. As you can see, these are not a custom post type. These are MLS items that live outside the wp_ tables.
Function:
function setup_filter_rewrites(){
add_rewrite_rule('search-listings/listing/([^/]*)/?', 'index.php?pagename=search- listings/listing/?address=$matches[1]&mls-number=$matches[2]', 'top');
}
add_action( 'init', 'setup_filter_rewrites' );
function setup_filter_query_vars( $query_vars ){
$query_vars[] = 'listing';
return $query_vars;
}
add_filter( 'query_vars', 'setup_filter_query_vars' );`
I'm always using this code instead of add_rewrite_rule() function:
add_filter( 'query_vars', 'my_query_vars' );
function dlouhavidea_query_vars( $vars ) {
$vars[] = 'address';
$vars[] = 'miles';
return $vars;
}
add_action( 'generate_rewrite_rules', 'my_rewrite_rules' );
function ,y_rewrite_rules( $wp_rewrite )
{
$wp_rewrite->rules = array(
'search-listings/listing/address/?([^/]*)/?$' => $wp_rewrite->index . '?pagename=search-listings&address=' . $wp_rewrite->preg_index( 1 ),
'search-listings/listing/miles/?([0-9]{1,})/?$' => $wp_rewrite->index . '?pagename=search-listings&miles=' . $wp_rewrite->preg_index( 1 )
) + $wp_rewrite->rules;
}
You'll than find your vars in get_query_var('address') and get_query_var('miles');

Resources