This can be achieved by adding rewrite rules.
First, add the query vars that will store the custom values in our rules:
function wpd_family_query_var( $query_vars ) {
$query_vars[] = 'wpd_family';
$query_vars[] = 'wpd_members';
return $query_vars;
}
add_filter( 'query_vars', 'wpd_family_query_var' );
Next, add the rules to capture both displaypage/family/
and displaypage/family/members/
requests:
function wpd_add_family_rewrite_rules() {
add_rewrite_rule(
'displaypage/([^/]+)/?$',
'index.php?pagename=displaypage&wpd_family=$matches[1]',
'top'
);
add_rewrite_rule(
'displaypage/([^/]+)/members/?$',
'index.php?pagename=displaypage&wpd_family=$matches[1]&wpd_members=true',
'top'
);
}
add_action( 'init', 'wpd_add_family_rewrite_rules' );
Don’t forget, you must flush rewrite rules after changing them.
You will then be able to access the values of your query vars anywhere after the parse_query
action with get_query_var()
:
if( $family = get_query_var( 'wpd_family' ) ){
echo 'family: ' . $family;
}
if( $members = get_query_var( 'wpd_members' ) ){
echo 'members: ' . $members;
}