Intereting Posts
Использование $ wpdb генерирует ошибку БД Что случилось с моим запросом базы данных wp? как получить настраиваемый элемент подменю admin (пользовательский тип сообщения), чтобы выделить, когда его активный Как использовать идентификатор автора в post permink Откуда стоят сообщения с боковой панели? Разработка плагинов: удаление опций при обновлении до новой версии Как настроить вывод плагина Миграция сайта с огромной базой данных $ form_fields from attachment_fields_to_edit возвращает пустой массив Могу ли я использовать как пользовательский отрывок, так и отрезанный отрывок? Как грубый форекс знает, что пароль взломан для целевого имени пользователя? Пользовательский тип сообщения, добавленный в меню, не будет отображаться во внешнем интерфейсе Информация о WordPress 4 Тот же короткий код не выполняется второй раз Я не могу получить сообщение, основанное на его значении postmeta и ключевом

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

У меня есть настройка пользовательской структуры для сообщений в Настройках> Переназначения как:

/%category%/%post_id%-%postname%

Это отлично работает для большинства моих сообщений, но есть одна категория, которую я хочу удалить post_id, поэтому она выглядит так:

/%category%/%postname%

Так что если категория – MOUSE, а post-id – 123, а postname (slug) – my-great-mouse-post, то правильная ссылка будет выглядеть так:

mydomain.com/mouse/123-my-great-mouse-post

Но если категория DOG, то я не хочу post-id, поэтому он должен выглядеть так:

mydomain.com/dog/my-great-dog-post

Я понимаю, как использовать действия и фильтры в моих функциях.php и в плагине, и я думаю, что хочу использовать add_rewrite_rule, но я честно запутался, как написать правило, поскольку регулярное выражение сложное, и я его не понимаю.

Solutions Collecting From Web of "Добавить правило перезаписи в структуру постоянной ссылки"

1. Добавьте новое правило перезаписи:

 add_action('init', function() { add_rewrite_rule('^dog/([^/]+)/?$', 'index.php?cat=dog&name=$matches[1]', 'top'); }, 10, 0); 

2. Отфильтруйте ссылку для связи:

 add_filter('post_link', function($post_link, $post, $leave_name = false, $sample = false) { if ( is_object_in_term($post->ID, 'category', 'DOG') ) { $post_link = str_replace($post->ID . '-', '', $post_link); } return $post_link; }, 10, 4); 

Попробуйте в своих functions.php . Надеюсь, это сработает для вас!