Вопрос или проблема
Я хочу, чтобы мой URL таксономии выглядел так: site.com/page/taxonomy_term
Как я могу этого достичь? Я написал код правила перезаписи WordPress в своем functions.php следующим образом:
function sphere_custom_rewrite_rules( $rules ){
$newrules['(.+?)/([^/]*)/?'] = 'index.php?pagename=$matches[1]&positive_sphere=$matches[2]';
$newrules['(.+?)/([^/]*)/?'] = 'index.php?pagename=$matches[1]&negative_sphere=$matches[2]';
return $newrules + $rules;
}
add_filter('rewrite_rules_array', 'sphere_custom_rewrite_rules');
Страница не возвращает ошибку 404, но не выполняет мои функции в taxonomy.php, вместо этого выполняет мой код в файле template-page-name.php. Что я хочу, так это чтобы, когда я ввожу этот URL:
site.com/page/taxonomy_term, выполнялся мой код в taxonomy.php.
Буду признателен за любую помощь! Спасибо.
Вы можете использовать две встроенные функции WordPress, чтобы получить желаемый результат.
add_rewrite_tag() и add_rewrite_rule()
Есть пример, как использовать эти теги, чтобы получить желаемый результат примерно посередине этой страницы https://codex.wordpress.org/Rewrite_API/add_rewrite_rule.
Примечание: не забудьте сбросить ваши правила перезаписи.
Ответ или решение
Чтобы изменить структуру URL для вашей таксономии в WordPress, необходимо использовать функции add_rewrite_tag()
и add_rewrite_rule()
. Ваш текущий код не выполняет необходимую логику для обработки запросов, что может быть причиной того, что вместо обращения к файлу taxonomy.php
, вызывается ваш шаблон template-page-name.php
.
Ваша цель состоит в том, чтобы адрес страницы выглядел так: site.com/page/taxonomy_term
, и при этом выполнялся код taxonomy.php
. Ниже приведен подробный пример реализации этого функционала.
Шаг 1: Добавление Rewrite Tag и Rewrite Rule
Вам нужно добавить две функции в файл functions.php
вашей темы. Первая — для регистрации пользовательского тега, вторая — для добавления правила перезаписи.
function sphere_custom_rewrite_tag() {
// Регистрация пользовательского тега для таксономии
add_rewrite_tag('%taxonomy_term%', '([^&]+)');
}
add_action('init', 'sphere_custom_rewrite_tag');
function sphere_custom_rewrite_rule() {
// Добавление правила для обработки URL
add_rewrite_rule('^page/([^/]*)/?', 'index.php?pagename=page&taxonomy_term=$matches[1]', 'top');
}
add_action('init', 'sphere_custom_rewrite_rule');
Шаг 2: Обработка запроса в taxonomy.php
Теперь вам нужно обработать переданный параметр taxonomy_term
в файле taxonomy.php
. Это позволит вам извлекать и отображать соответствующие термины в зависимости от URL.
if (get_query_var('taxonomy_term')) {
$taxonomy_term = get_query_var('taxonomy_term');
// Получаем объект термина таксономии
$term = get_term_by('slug', $taxonomy_term, 'ваша_таксономия');
if ($term) {
// Логика отображения информации о термине
// Например, вывод категории
<h1><?php echo esc_html($term->name); ?></h1>
// Дополнительная логика вывода контента
} else {
// Условие, если термин не найден
// Здесь вы можете отображать сообщение об ошибке или рендерить 404
}
}
Шаг 3: Сброс правил перезаписи
После добавления новых правил не забудьте сбросить правила перезаписи. Это можно сделать, перейдя в админку WordPress: Настройки -> Постоянные ссылки и просто нажав кнопку "Сохранить изменения".
Заключение
Теперь, когда вы перейдете по адресу site.com/page/taxonomy_term
, WordPress должен корректно обрабатывать запрос, перенаправляя его на taxonomy.php
. Обязательно проверьте и протестируйте URL-адреса, чтобы убедиться, что функционал работает корректно и возвращает правильные термины таксономии.
Эта структура гарантирует, что ваш код будет соблюден по всем стандартам и требованиям SEO, обеспечивая удобство и предсказуемость для пользователей вашего сайта.