Как правильно настроить add_rewtire_rule для пагинации архива терма пользовательской таксономии?
Создано несколько пользовательских таксономий.
С помощью фильтров удалены названия таксономий из URL + Добавлены правила для роутинга.
Пример:
// Удаление slug таксономии
function remove_tax_slug_link( $link, $term, $taxonomy ) {
if ( $taxonomy !== 'my_tax' )
return $link;
return str_replace( 'my_tax/', '', $link );
}
add_filter( 'term_link', 'remove_tax_slug_link', 10, 3 );
// Правило для роутинга
function custom_tax_rewrite_rule() {
$cats = get_terms(
'my_tax', array(
'hide_empty' => false,
)
);
if(sizeof($cats))
foreach($cats as $cat)
add_rewrite_rule( $cat->slug.'/?$', 'index.php?my_tax='.$cat->slug, 'top' );
}
add_action('init', 'custom_tax_rewrite_rule', 10, 0);
Все отлично, но не работает пагинация архива таксономии, вылетает ошибка 404.
Нашел вот такое решение проблемы:
add_rewrite_rule('([^/]+)/?$', 'index.php?my_tax=$matches[1]', 'top');
add_rewrite_rule( '(.+?)/page/?([0-9]{1,})/?$','index.php?my_tax=$matches[1]&paged=$matches[2]', 'top' );
Но в этом варианте пагинация работает тока в указанной пользавательской таксономии, а пагинация в рубриках и стандартных тегах не работает.
Как правильно настроить правило руотинга, не затронув стандартные рубрики и теги?