The date_rewrite_rules WordPress PHP filter modifies the rewrite rules used for date archives. Date archives typically include patterns like /yyyy/, /yyyy/mm/, and /yyyy/mm/dd/.
Usage
add_filter('date_rewrite_rules', 'my_custom_date_rewrite_rules');
function my_custom_date_rewrite_rules($date_rewrite) {
// your custom code here
return $date_rewrite;
}
Parameters
- $date_rewrite (string[]): Array of rewrite rules for date archives, keyed by their regex pattern.
More information
See WordPress Developer Resources: date_rewrite_rules
Examples
Remove day archive
Remove the day archive by unsetting the corresponding rewrite rule.
add_filter('date_rewrite_rules', 'remove_day_archive');
function remove_day_archive($date_rewrite) {
unset($date_rewrite['([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$']);
return $date_rewrite;
}
Add custom date format
Add a custom date format for date archives using the format /yyyy/mm-name/.
add_filter('date_rewrite_rules', 'custom_date_archive_format');
function custom_date_archive_format($date_rewrite) {
$date_rewrite['([0-9]{4})/([0-9]{1,2})-([^/]+)/?$'] = 'index.php?year=$matches[1]&monthnum=$matches[2]&name=$matches[3]';
return $date_rewrite;
}
Remove all default date archives
Remove all default date archives by returning an empty array.
add_filter('date_rewrite_rules', 'remove_all_date_archives');
function remove_all_date_archives($date_rewrite) {
return [];
}
Change year archive format
Change the year archive format to /archive/yyyy/.
add_filter('date_rewrite_rules', 'change_year_archive_format');
function change_year_archive_format($date_rewrite) {
$date_rewrite['archive/([0-9]{4})/?$'] = 'index.php?year=$matches[1]';
return $date_rewrite;
}
Change month archive format
Change the month archive format to /yyyy-month/.
add_filter('date_rewrite_rules', 'change_month_archive_format');
function change_month_archive_format($date_rewrite) {
$date_rewrite['([0-9]{4})-month/?$'] = 'index.php?year=$matches[1]&monthnum=$matches[2]';
return $date_rewrite;
}