Переписать постоянную ссылку, чтобы включить несколько таксономий.

Вопрос или проблема

Я видел похожие вопросы, но они, кажется, не совсем подходят к моей проблеме.

У меня есть тип записи, называемый продукт, и у меня есть 2 таксономии: product_cat и location.

Мне нужны архивные страницы, которые объединяют обе эти таксономии, которые будут структурированы так: /product/product_cat/location

Я знаю, что это можно сделать с помощью перезаписей URL, но я не могу понять, как заставить это работать.

Обновление

Я достиг этого в некоторой степени, используя

  add_rewrite_rule( '^art-classes/([^/]*)/([^/]*)/?',
                 'index.php?product_cat=$matches[1]&location=$matches[2]',
                 'top' );

Но теперь моя страница отдельного продукта не загружается. Она просто загружает все еще архивную страницу. Что-то не так с моим регулярным выражением?

function custom_rewrite_rules() {
 add_rewrite_rule( '^art-classes/([^/]*)/([^/]*)/?$',
                 'index.php?product_cat=$matches[1]&location=$matches[2]',
                 'top' );

}
add_action('init', 'custom_rewrite_rules');

$ в конце исправил ситуацию. Не знаю почему.

Ответ или решение

Если вы хотите настроить структуру постоянных ссылок для страницы архива, комбинируя несколько таксономий, это может быть достигнуто с помощью функции add_rewrite_rule в WordPress. У вас есть пользовательский тип поста — product и две таксономии — product_cat и location, и ваша задача заключается в создании структуры ссылок вида /product/product_cat/location. Давайте разберемся, как можно этого достичь, избегая при этом ошибок.

Первоначальные шаги:

  1. Подключитесь к хуку init: Это позволяет вам добавлять пользовательские правила для перезаписи URL, как только WordPress запускается.

  2. Создайте функцию для правил перезаписи: Поскольку вы хотите создать структуру, которая будет учитывать обе таксономии, вам нужно использовать регулярные выражения.

Реализация:

Код для правок правил:

function custom_rewrite_rules() {
    add_rewrite_rule('^product/([^/]*)/([^/]*)/?$', 'index.php?product_cat=$matches[1]&location=$matches[2]', 'top');
}
add_action('init', 'custom_rewrite_rules');

Важные моменты:

  • Регулярное выражение:

    • ^product/([^/]*)/([^/]*)/?$: Это правило учитывает вариант URL, оканчивающийся на /, и ловит две отдельные части URL, которые соотносятся с таксономиями product_cat и location.
  • Использование $ в конце регулярного выражения: Это символ обозначает конец строки в регулярном выражении. Без него могут возникнуть ситуации, когда ваш URL будет совпадать с другими неправильными URL, что приводит к загрузке неверных страниц (например, страницы архива вместо страницы поста).

Решение проблем с загрузкой страницы продукта:

Почему ваша страница продукта не загружается?

После добавления правила перезаписи ваша одностраничная страницу продукта может перестать отображаться правильно. Это происходит из-за конфликта с правилами маршрутизации. Чтобы исправить это, убедитесь, что добавленное правило перезаписи будет выше в приоритете чем стандартные правила.

Дополнительные рекомендации:

  • Точность: Убедитесь, что параметры URL передаются правильно и соответствуют тем переменным, которые вы используете в WordPress-запросе.

  • Очистка структуры ссылок: После изменения правил перезаписи важно сбросить постоянные ссылки в админке WordPress, переходя к Settings -> Permalinks и просто сохраняя их, чтобы обновить правила маршрутизации.

  • Оптимизация: Проверьте другие загруженные плагины и правила перезаписи, чтобы избежать конфликтов.

Надеюсь, эта информация поможет вам успешно настроить постоянные ссылки для архива и избежать проблем с перезаписями в WordPress.

Оцените материал
Добавить комментарий

Капча загружается...