Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/35: Рейтинг темы: голосов - 35, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 14.04.2015
Сообщений: 10
1

Как убрать slug произвольного типа записей из URL?

07.11.2015, 21:19. Показов 6762. Ответов 4
Метки url (Все метки)

Здравствуйте. Столкнулась с такой проблемой, необходимо для записей кастомного типа убрать slug post_type из url.
сейчас url такой: http://my-website/services/lec... e-kariesa/
должно быть: http://my-website/lechenie/lechenie-kariesa/

Пробовала в functions.php вставлять этот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function custom_remove_cpt_slug( $post_link, $post, $leavename ) {
 
    if ( 'services' != $post->post_type || 'publish' != $post->post_status ) {
        return $post_link;
    }
 
    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
 
    return $post_link;
}
add_filter( 'post_type_link', 'custom_remove_cpt_slug', 10, 3 );
function custom_parse_request_tricksy( $query ) {
 
    // Only noop the main query
    if ( ! $query->is_main_query() )
        return;
 
    // Only noop our very specific rewrite rule match
    if ( 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
        return;
    }
 
    // 'name' will be set if post permalinks are just post_name, otherwise the page rule will match
    if ( ! empty( $query->query['name'] ) ) {
        $query->set( 'post_type', array( 'post', 'services', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'custom_parse_request_tricksy' );
url конечно меняет, но при переходе на запись этого типа 404 ошибка. Может кто-то сталкивался с такой задачкой, помогите разобраться пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2015, 21:19
Ответы с готовыми решениями:

Сыпятся ошибки при создании категорий для произвольного типа записей
Здравствуйте. Добавил я свой тип записей "анкеты". Всё отлично работало, я не знал горя, пока,...

Как создать стек объектов произвольного типа?
Предметная область: «Стек объектов произвольного типа». Данные класса: динамический список...

Как убрать точку из url
Здравствуйте. Указанный ниже код формирует меню сайта, но делает это некорректно. При присваивании...

Как в WP убрать .html в конце url?
Собственно сабж.

__________________
4
163 / 164 / 78
Регистрация: 06.09.2015
Сообщений: 632
07.11.2015, 22:23 2
tatynechka, ну так там, по моему, надо еще пересохранить ЧПУ (Постоянные ссылки) в админке в настройках
0
1 / 1 / 0
Регистрация: 14.04.2015
Сообщений: 10
08.11.2015, 18:53  [ТС] 3
shevan да, я помню об этом. Пересохраняла, не помогает

Добавлено через 20 часов 23 минуты
Проблему удалось решить. Выкладываю решение на всякий случай, вдруг кому пригодится.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function true_post_type_rewrite() {
    global $wp_rewrite;
    // в данном случае мой тип записей был - Услуги (services)
    // этот код позволит перезаписать урлы
    // параметры add_rewrite_tag('%название_тега%', '%маска_символов%', '%url_параметр%')
    $wp_rewrite->add_rewrite_tag("%services%", '([^/]+)', "services=");
    $wp_rewrite->add_permastruct('services', '%services%' );
}
add_action( 'init', 'true_post_type_rewrite');
 
function true_rewrite_conflicts( $request ) {
    if(!is_admin())
        $request['post_type'] = array('services', 'post', 'page', 'blog', 'doctors'); // перечисляем типы записей с подобной структурой пермалинков
    return $request;
}
add_filter( 'request',  'true_rewrite_conflicts' );
Пересохраняем пермалинки в админке wp
1
0 / 0 / 0
Регистрация: 17.12.2019
Сообщений: 1
17.12.2019, 16:39 4
Здравствуйте. Столкнулся с такой же проблемой, необходимо для записей кастомного типа убрать slug из url.
сейчас url такой: http://my-website/razdel/name_posta/
должно быть: http://my-website/name_posta/
Может кто подскажет?
0
Модератор
Эксперт HTML/CSS
1468 / 975 / 468
Регистрация: 13.03.2010
Сообщений: 3,596
18.12.2019, 08:01 5
Vital_999, а решение выше не работает?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2019, 08:01

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как убрать с url название контроллера
Всем привет! Ребята есть ли возможность в урле не отображать контроллер? routes.MapRoute(...

Как убрать index.html из url
Привет. Гуглил и выдавало файлы htaccess, но там почему-то столько разных вариантов и непонятно что...

Как убрать пробелы из URL адреса
Адреса формируются следующим образом /brands/гамма/ /brands/royal%20czech%20porcelain/...

Записать адрес переменной произвольного типа в переменную типа int
Здравствуйте, есть структура __packed struct myStruct{ uint32 HisCh; uint32 sNo; uint16...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.