- Вопрос или проблема
- Ответ или решение
- 1. Регистрация пользовательского типа записей с желаемым слагом для перезаписи
- 2. Добавление правила перезаписи для обработки пользовательской структуры URL
- 3. Модификация вашего шаблона для обработки пользовательской структуры URL
- 4. Важно: очистка правил перезаписи
- Заключение
Вопрос или проблема
Я проверил все темы на форуме об этом, но не нашел способа решить свою проблему. Извините за мой английский, я француз.. 🙂
Итак.. у меня есть пользовательский список записей (с шаблоном 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
.
- Rewrite: это значение должно быть установлено в
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.