Почему Yoast SEO не сохраняет основную категорию в URL товара WooCommerce

    Владельцы интернет-магазинов на WordPress с плагинами WooCommerce и Yoast SEO нередко сталкиваются с ситуацией: в карточке товара выбрана основная категория, но в URL-адресе отображается совсем другая, назначенная WordPress по умолчанию. Проблема кроется в том, как CMS назначает первую категорию при сохранении записи. Разберём причины и способы решения.

    Почему WordPress игнорирует выбранную основную категорию Yoast SEO

    Yoast SEO добавляет в карточку товара метабокс для выбора основной категории, но не меняет логику формирования URL в WooCommerce. WordPress при сохранении товара автоматически присваивает ему первую категорию из списка выбранных, отсортированную по ID. Если категория с наименьшим ID не совпадает с той, что вы отметили как основную, в URL попадает именно она. Это поведение зашито в ядре системы, а не в плагине.

    Как исправить некорректный URL товара в WooCommerce

    Способ 1: SQL-запрос для принудительного изменения основной категории

    Если нужно срочно поправить URL для конкретного товара, выполните в PHPMyAdmin или через консоль базы данных следующий запрос, заменив 123 на ID товара, а 456 на ID нужной категории:

    UPDATE wp_term_relationships SET term_taxonomy_id = 456 WHERE object_id = 123 AND term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'product_cat');

    Важно: перед выполнением сделайте резервную копию базы данных. Этот метод меняет привязку категории напрямую, и URL обновится после пересохранения товара.

    Способ 2: Плагин для управления основной категорией

    Установите бесплатный плагин Yoast SEO WooCommerce Primary Category Fix или Primary Category for WooCommerce. Они перехватывают событие сохранения товара и заставляют WordPress использовать ту категорию, которую вы указали в Yoast SEO. После активации плагина пересохраните товары, у которых URL отображается неверно.

    Способ 3: Обновление темы и проверка совместимости

    В вашем случае используется тема Hestia. Устаревшая версия темы может конфликтовать с Yoast SEO. Обновите тему до последней версии, затем очистите кеш (если есть плагин кеширования) и проверьте URL. Если проблема осталась, временно переключитесь на стандартную тему (например, Twenty Twenty-Four) - это поможет понять, связана ли ошибка с темой.

    Почему WordPress назначает категорию по ID, а не по выбору пользователя

    CMS использует минимальный ID категории для формирования постоянной ссылки, потому что это самый быстрый и стабильный способ определить первую категорию в массиве. Yoast SEO не вмешивается в этот процесс на уровне ядра, а только добавляет метабокс для SEO-настроек. Чтобы обойти это, требуется либо дополнительный плагин, либо правка кода.

    Что делать, если ни один способ не помог

    Попробуйте отключить все плагины, кроме WooCommerce и Yoast SEO, и переключиться на стандартную тему. Если URL стал корректным, значит проблема в совместимости одного из оставшихся плагинов или темы. Включайте плагины по одному и проверяйте URL после каждого включения. Также проверьте настройки постоянных ссылок в админке: зайдите в Настройки → Постоянные ссылки и нажмите «Сохранить изменения» (это сбросит правила перезаписи).

    Часто задаваемые вопросы