Intereting Posts
Выберите раскрывающийся список, не показывающий выбранное значение php Добавление класса в функцию body_class Показывать только изображение из настраиваемого поля Вставить iFrame в WordPress 3.0.1 Как избавиться от вертикальной полосы в URL-адресе WordPress $ wpdb нет результата Как сделать виджет пользовательской панели мониторинга для отображения пользовательского уведомления от администратора? Форма отправки переднего конца с плагином формы jquery Как сделать отдельную RSS-ленту для каждого настраиваемого типа сообщения Иерархия таксономии / категории теряется при редактировании сообщений Лучший способ выполнить ping для изменений API в wordpress? Twitter shortlink 404 не найдено Как фильтровать по типу пользовательских сообщений в архивах таксономии Как защитить вход через SSL, но не остальную панель Список пользователей с наибольшим количеством сообщений за последние 30 дней

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

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

/%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 . Надеюсь, это сработает для вас!