ГлавнаяБлогErrors / FixesWooCommerce кастомная категориальная навигация с использованием «каталог
Errors / Fixes5 сентября 2026 г.2 мин

WooCommerce кастомная категориальная навигация с использованием «каталог

WooCommerce кастомная категориальная навигация с использованием «каталог
WooCommerce кастомная категориальная навигация с использованием «каталог - image 2

WooCommerce custom category pagination using "catalog"

Введение

На сайте, созданным почти 10 лет назад, была реализована кастомная перезапись, позволяющая использовать слово "catalog" как основу для магазина и категорий. При этом возможно установить "catalog" в качестве основы для категорий товаров в настройках премаблейнов. Такая настройка работает для коротких страниц архива категорий, но в какой-то момент перестала работать с пагинацией. Этот факт заставляет задуматься о специфичности использования термина "catalog", который может быть зарезервирован для WooCommerce-установок, не осуществляющих транзакции.

Проблема и её причины

Проблема заключается в том, что при использовании термина "catalog" для категории товара, страницы с пагинацией возвращают ошибку 404. Это может быть связано с тем, что WooCommerce использует термин "catalog" для представления каталога товаров без транзакций, тогда как "shop" используется для активных продаж.

Решение проблемы

Для решения проблемы можно использовать фильтры перезаписи правил и добавить свои собственные правила для пагинации категорий товаров. Вот пример кода:

add_filter( 'rewrite_rules_array', function( $rules ) {
    $new_rules = array();
    $terms = get_terms( array(
        'taxonomy' => 'product_cat',
        'post_type' => 'product',
        'hide_empty' => false,
    ));
    
    if ( $terms && ! is_wp_error( $terms ) ) {
        $siteurl = esc_url( home_url( '/' ) );
        foreach ( $terms as $term ) {
            $term_slug = $term->slug;
            $baseterm = str_replace( $siteurl, '', get_term_link( $term->term_id, 'product_cat' ) );
            
            // правила для конкретной категории
            $new_rules[$baseterm .'?$'] = 'index.php?product_cat=' . $term_slug;
            
            // правила для пагинации категории
            $new_rules[$baseterm . '/page/([0-9]{1,})/?$'] = 'index.php?product_cat=' . $term_slug . '&paged=$matches[1]';
        }
        
        return $new_rules + $rules;
    }
});

Практические советы

  1. Тестирование: После внесения изменений необходимо тщательно протестировать сайт на наличие ошибок 404 и корректность отображения пагинации.
  2. Управление перезаписями: Убедитесь, что ваша кастомная перезапись не конфликтует с другими правилами перезаписи.
  3. Сохранение правил перезаписи: Не забудьте сохранить изменения правил перезаписи после каждого изменения в настройках премаблейнов.

Заключение

Использование слова "catalog" в качестве основы для категорий товаров может вызвать проблемы с пагинацией в WooCommerce. Для решения этой проблемы можно использовать фильтры перезаписи правил и добавить свои собственные правила для пагинации категорий.

SEO