Динамические пользовательские постоянные ссылки

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

У меня есть сценарий, в котором цель состоит в создании пользовательского постоянного адреса, который может динамически изменяться, например:

  • Если показывается информация о стране, то 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, вы можете использовать иерархический пользовательский тип записей. Например, создайте основной тип постов «Информация о стране» и дочерние посты «Информация о городе».

  1. Создайте страницу или пост для «Информация о стране».
  2. Создайте дочерние посты для каждого города, связывая их с соответствующей страницей страны.

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, обеспечивая при этом необходимую гибкость и удобство для пользователей. Это решение позволит вам создать более структурированный и организованный контент, который будет легко воспринимаем и доступен как для пользователей, так и для поисковых систем.

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

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