The page_rewrite_rules WordPress PHP filter allows you to modify the rewrite rules used for the “page” post type archives.
Usage
add_filter('page_rewrite_rules', 'your_custom_function');
function your_custom_function($page_rewrite) {
// your custom code here
return $page_rewrite;
}
Parameters
$page_rewrite(string[]): An array of rewrite rules for the “page” post type, keyed by their regex pattern.
More information
See WordPress Developer Resources: page_rewrite_rules
Examples
Add a custom rewrite rule
Add a custom rewrite rule for page post type archives:
add_filter('page_rewrite_rules', 'add_custom_page_rewrite_rule');
function add_custom_page_rewrite_rule($page_rewrite) {
$page_rewrite['custom-page/([^/]+)/?$'] = 'index.php?page=$matches[1]';
return $page_rewrite;
}
Remove a specific rewrite rule
Remove a specific rewrite rule for page post type archives:
add_filter('page_rewrite_rules', 'remove_specific_page_rewrite_rule');
function remove_specific_page_rewrite_rule($page_rewrite) {
unset($page_rewrite['some-pattern']);
return $page_rewrite;
}
Clear all rewrite rules
Clear all rewrite rules for page post type archives:
add_filter('page_rewrite_rules', 'clear_all_page_rewrite_rules');
function clear_all_page_rewrite_rules($page_rewrite) {
return [];
}
Modify an existing rewrite rule
Modify an existing rewrite rule for page post type archives:
add_filter('page_rewrite_rules', 'modify_existing_page_rewrite_rule');
function modify_existing_page_rewrite_rule($page_rewrite) {
if (isset($page_rewrite['some-pattern'])) {
$page_rewrite['some-pattern'] = 'index.php?page=$matches[1]&custom_var=1';
}
return $page_rewrite;
}
Log rewrite rules
Log the current page post type rewrite rules:
add_filter('page_rewrite_rules', 'log_page_rewrite_rules');
function log_page_rewrite_rules($page_rewrite) {
error_log(print_r($page_rewrite, true));
return $page_rewrite;
}