Почему 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 после каждого включения. Также проверьте настройки постоянных ссылок в админке: зайдите в Настройки → Постоянные ссылки и нажмите «Сохранить изменения» (это сбросит правила перезаписи).