Перезапись URL на пользовательском посте с плагином CPT UI

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

Я проверил все темы на форуме об этом, но не нашел способа решить свою проблему. Извините за мой английский, я француз.. 🙂

Итак.. у меня есть пользовательский список записей (с шаблоном listing pro) здесь: http://easycowork.fr/bureau/easy-office-lille/

Я создал пользовательский пост с названием service и отображаю все связанные с услугой записи на странице списка. Когда я нажимаю на услугу, я отображаю ее данные на той же странице с параметром GET (идентификатор услуги) вот так: http://easycowork.fr/bureau/easy-office-lille/?show_service=196

Но мне нужно, чтобы вместо show_service=196 после названия списка “easy-office-lille” отображалось имя услуги

Как я могу это сделать? Я действительно потерялся в переписывании URL

Я использую плагин Custom post type UI для создания пользовательских постов, я добавил опцию перезаписи в true и опцию пользовательского перезаписи слаг в service и зарегистрировал постоянную ссылку, но это не сработало.

Спасибо за помощь!

Чтобы достичь результата для пользовательского переписывания URL для вашего пользовательского типа поста service с использованием плагина Custom Post Type UI,

вы можете следовать этим шагам

Зарегистрируйте пользовательский тип поста с нужным слугом перезаписи

Зарегистрируйте пользовательский тип поста с слагом перезаписи:

В плагине Custom Post Type UI перейдите в CPT UI > Add/Edit Post Types и отредактируйте ваш тип поста "service". Убедитесь, что вы установили
Rewrite на true и опцию Custom Rewrite Slug на
нужный слуг, например (service)

Добавьте правило переписывания для обработки пользовательской структуры URL

Добавьте правило переписывания для обработки пользовательской структуры URL. Вы можете
сделать это, добавив код в файл functions.php вашей темы или в
пользовательский плагин

function custom_rewrite_rule() {
    add_rewrite_rule(
        '^bureau/([^/]+)/([^/]+)/?$',
        'index.php?pagename=$matches[1]&show_service=$matches[2]',
        'top'
    );
}
add_action('init', 'custom_rewrite_rule');

Это правило перепишет URL, такие как http://easycowork.fr/bureau/easy-office-lille/123 на http://easycowork.fr/index.php?pagename=bureau/easy-office-lille&show_service=123

Измените ваш шаблон для обработки пользовательской структуры URL

В вашем шаблонном файле single-service.php вы можете получить
идентификатор услуги из параметра show_service и отобразить
соответствующий контент.

$service_id = isset($_GET['show_service']) ? intval($_GET['show_service']) : 0;
if ($service_id) {
    // Запрос поста услуги на основе ID и отображение его контента
    // Пример: $service_post = get_post($service_id);
} else {
    // Отобразить стандартный контент для страницы списка
}

Не забудьте сбросить правила переписывания после добавления или изменения их. Вы можете сделать это, перейдя на страницу "Настройки" > "Постоянные ссылки" в админке WordPress и нажав кнопку Сохранить изменения

После выполнения этих шагов вы сможете получить доступ к страницам ваших услуг с URL, такими как http://easycowork.fr/bureau/easy-office-lille/123, где 123 – это идентификатор услуги

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

Для того чтобы реализовать перезапись URL своего пользовательского типа записей (CPT) «service», используя плагин Custom Post Type UI, вам необходимо выполнить несколько шагов. Давайте подробно рассмотрим каждый из них.

1. Регистрация пользовательского типа записей с желаемым слагом для перезаписи

Перейдите в админ-панель WordPress и выполните следующие действия:

  • Зайдите в раздел CPT UI > Add/Edit Post Types.
  • Найдите ваш пользовательский тип записей «service» и убедитесь, что у вас установлены следующие параметры:
    • Rewrite: это значение должно быть установлено в true.
    • Custom Rewrite Slug: здесь укажите слаг, например, service.

2. Добавление правила перезаписи для обработки пользовательской структуры URL

Чтобы настроить специальную переработку URL, добавьте следующее правило в файл functions.php вашей темы или в отдельный плагин:

function custom_rewrite_rule() {
    add_rewrite_rule(
        '^bureau/([^/]+)/?$',
        'index.php?pagename=$matches[1]',
        'top'
    );
}
add_action('init', 'custom_rewrite_rule');

Это правило изменяет URL-адреса формата http://easycowork.fr/bureau/easy-office-lille/ таким образом, чтобы они соответствовали стандартному варианту http://easycowork.fr/index.php?pagename=bureau/easy-office-lille.

3. Модификация вашего шаблона для обработки пользовательской структуры URL

В файле вашего шаблона – например, single-service.php – вам нужно извлекать информацию о записях сервиса и отображать соответствующий контент. Вот пример кода:

$service_name = get_query_var('pagename');
if ($service_name) {
    // Здесь вы можете выполнить запрос к вашей базе данных, чтобы получить ID услуги по имени
    $service_post = get_page_by_path($service_name, OBJECT, 'service');

    if ($service_post) {
        // Отобразите контент записи услуги
        setup_postdata($service_post);
        the_title();
        the_content();
        wp_reset_postdata();
    } else {
        // Отобразите сообщение об ошибке, если услуга не найдена
        echo 'Услуга не найдена.';
    }
} else {
    // Отобразить стандартный контент для страницы списка
}

4. Важно: очистка правил перезаписи

После того как вы добавили или изменили правила перезаписи, необходимо очистить их. Сделайте это, перейдя в Настройки > Постоянные ссылки в вашей админ-панели WordPress и просто нажав кнопку Сохранить изменения. Это необходимо, чтобы новые правила начали работать.

Заключение

Следуя приведенным шагам, вы сможете настроить URL для своих услуг так, чтобы они выглядели более семантически правильными и удобными для пользователей, вместо использования GET-параметров в URL. Например, вы сможете использовать формат http://easycowork.fr/bureau/easy-office-lille/, что будет не только эстетически приятнее, но и улучшит SEO вашего сайта.

Если у вас возникнут вопросы или трудности, не стесняйтесь обратиться за помощью в профессиональное IT-сообщество или к тематическим форумам, связанным с WordPress.

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

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