- Вопрос или проблема
- Ответ или решение
- Динамические настраиваемые постоянные ссылки в WordPress
- 1. Структура постоянных ссылок
- 2. Создание страниц или пользовательских типов записей
- 3. Ручное определение правил переписывания URL
- 4. Добавление переменной запроса
- 5. Настройка шаблона для постоянной ссылки
- 6. Оптимизация для SEO
- Заключение
Вопрос или проблема
У меня есть сценарий, в котором цель состоит в создании пользовательского постоянного адреса, который может динамически изменяться, например:
-
Если показывается информация о стране, то URL должен быть
http://example.com/country-information
-
Если показывается информация о городе в этой конкретной стране, то URL должен выглядеть как
http://example.com/country/city-information
.
Как я могу этого добиться?
Это зависит от того, что вы имеете в виду под “динамически изменяемым”, но самый простой способ достичь того, о чем вы говорите, — использовать страницы (или иерархический настраиваемый тип записи) и сделать страницы “информация о городе” дочерними для страницы “информация о стране”, с которой они связаны. Затем установите постоянные ссылки на “Имя записи”, и вы получите искомые URL.
Вы пробовали add_rewrite_rule()
? Например:
add_action( 'init', function() {
add_rewrite_rule( 'country-information/([a-z0-9-]+)[/]?$', 'index.php?country-information=$matches[1]', 'top' );
} );
После добавления нового правила вам нужно сбросить постоянные ссылки, Админ > Постоянные ссылки > Сохранить
Затем добавьте новую переменную запроса с помощью add_filter
, что необходимо для того, чтобы пользовательские правила перезаписи с вашими собственными аргументами работали, или любые другие пользовательские переменные запроса, которые вы хотите сделать общедоступными.
add_filter( 'query_vars', function( $query_vars ) {
$query_vars[] = 'country-information';
return $query_vars;
} );
Вы также можете использовать настраиваемый шаблон для этого постоянного адреса, используя хук template_include
.
function conutry_information_template( $template ) {
if ( get_query_var( 'country-information' ) === false || get_query_var( 'country-information' ) == '' ) {
return $template;
}
return get_template_directory() . '/country-information.php';
}
add_action( 'template_include', 'conutry_information_template' );
Ответ или решение
Динамические настраиваемые постоянные ссылки в WordPress
Создание динамических постоянных ссылок в WordPress — это важный элемент для сайтов, которые требуют уникальных и понятных URL для разных типов контента, таких как информация о странах и городах. Ваша цель заключается в том, чтобы сделать URL-адреса, которые изменяются в зависимости от контента, который вы отображаете. Рассмотрим, как это реализовать.
1. Структура постоянных ссылок
Первый шаг — правильная настройка структуры постоянных ссылок в вашей админ-панели WordPress. Рекомендуется использовать формат «Название записи» для достижения более человекопонятных URL. Это можно сделать в разделе Настройки → Постоянные ссылки.
2. Создание страниц или пользовательских типов записей
Чтобы добиваться требуемой структуры URL, вы можете использовать иерархический пользовательский тип записей. Например, создайте основной тип постов «Информация о стране» и дочерние посты «Информация о городе».
- Создайте страницу или пост для «Информация о стране».
- Создайте дочерние посты для каждого города, связывая их с соответствующей страницей страны.
3. Ручное определение правил переписывания URL
Если вы хотите более контролируемую настройку, используйте функцию add_rewrite_rule()
, чтобы создать правила для вашей постоянной ссылки. Ниже приведен пример такого кода:
add_action( 'init', function() {
add_rewrite_rule( 'country-information/([a-z0-9-]+)/?$', 'index.php?country-information=$matches[1]', 'top' );
} );
После добавления этого правила не забудьте обновить настройки пермалинков в разделе Настройки → Постоянные ссылки, кликнув на «Сохранить изменения», что приведет к сбросу правил перезаписи.
4. Добавление переменной запроса
Чтобы ваше правило работало, нужно добавить новую переменную запроса с помощью фильтра query_vars
. Это позволит вам использовать свои собственные аргументы в правилах перезаписи:
add_filter( 'query_vars', function( $query_vars ) {
$query_vars[] = 'country-information';
return $query_vars;
} );
5. Настройка шаблона для постоянной ссылки
Для отображения контента на вашем пользовательском URL вы можете использовать хук template_include
. Например:
function country_information_template( $template ) {
if ( false === get_query_var( 'country-information' ) || '' === get_query_var( 'country-information' ) ) {
return $template;
}
return get_template_directory() . '/country-information.php';
}
add_action( 'template_include', 'country_information_template' );
6. Оптимизация для SEO
Не забывайте о поисковой оптимизации (SEO):
- Четкие и понятные URL: Используйте ключевые слова, отражающие содержание страниц.
- Мета-теги: Настройте заголовки и описания для каждой страницы, чтобы оптимизировать их в поисковых системах.
- Ссылки: Внутренние ссылки между страницами «Стран» и «Городов» помогут улучшить индексирование.
Заключение
С помощью представленных методов вы сможете динамически генерировать постоянные ссылки на вашем сайте WordPress, обеспечивая при этом необходимую гибкость и удобство для пользователей. Это решение позволит вам создать более структурированный и организованный контент, который будет легко воспринимаем и доступен как для пользователей, так и для поисковых систем.