I'm developing a WP plugin and have a WordPress URL:
(e.g.: http://localhost/testsite1/coder/?id=66
),
and have attempted to add a rewrite rule to
http://localhost/testsite1/coder/66/
using the following rule:
function add_mypage_rule(){
add_rewrite_rule(
'^coder/([0-9]+)',
'index.php?id=$matches',
'top'
);
}
add_action('init', 'add_mypage_rule');
I have registered a WP Query Var using:
add_filter('query_vars', 'registering_custom_query_var');
function registering_custom_query_var($query_vars){
$query_vars[] = 'id';
return $query_vars;
}
but when at URL http://localhost/testsite1/coder/66/
, when I run code
echo get_query_var('id');
nothing is displayed
however when at URL http://localhost/testsite1/coder/?id=66
the echo statement will display 66
.
What is wrong with my rewrite rule resulting in echo get_query_var('id');
not accessing the parameter and displaying 66?
add_rewrite_rule
function, the first argument is the regular expression. Right? When you wrap your regular expression/pattern in parentheses, you're grouping the expression, which means you could access the captured group in the parentheses like this: id=$matches[1]
.^coder/([0-9]+)
id=$matches[1]
add_action('init', 'add_mypage_rule');
function add_mypage_rule()
{
add_rewrite_rule(
'^coder/([0-9]+)',
'index.php?id=$matches[1]',
'top'
);
}
Settings > Permalinks > Click on the 'Save changes' button at the bottom of the page!
And now it should, theoretically, work, unless there are more details that you have not mentioned in your question!