Можно ли переопределить / изменить слаг существующего пользовательского типа поста плагина (без простого редактирования плагина)?
То есть, если плагин X создает пользовательский тип записи с помощью slug / uncookedtoast /, возможно ли добавить в functions.php фильтр (или что-то подобное), который изменяет слаг на / bread /?
custom-post-types
functions
slug
Edbury
источник
источник
Ответы:
Да, это возможно, но если плагин создает пользовательский тип записи, используя
rewrite => array('slug' => 'post_type')
параметр, то маловероятно, что вы сможете заменить слаг.Каждый раз, когда создаются пользовательские типы записей, правила перезаписи URL записываются в базу данных. В зависимости от того, какое действие инициирует создание пользовательского типа записи (например, действие init ), WordPress сбросит правила перезаписи и восстановит слагов пользовательского типа записи независимо от того, какие изменения вы пытаетесь внести.
Тем не менее, вы можете предоставить собственные слагы для пользовательских типов постов. В следующем примере предполагается, что у вас есть пользовательский тип записи
movies
и вы пытаетесь изменить/movies/
слаг/films/
.Чтобы завершить, вот основная функция, используемая для определения
movies
пользовательского типа сообщения. Плагин, на который вы ссылаетесь, должен делать что-то вроде этого:Вы можете изменить таблицу параметров, указав свои собственные правила на основе существующего типа сообщения.
По сути, мы сделаем это:
Вот как вы можете сделать это:
Теперь у вас будет два способа доступа к вашим фильмам:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Обратите внимание, что я не рекомендую подключать
add_custom_rewrite_rule
кinit
действию, поскольку оно будет срабатывать слишком часто. Это всего лишь пример. Лучшее место для применения этой функции - активация темы, активация плагина, возможно, действие save_post и т. Д. В зависимости от того, что вам нужно сделать, вам может понадобиться запустить его только один или несколько раз.На этом этапе вы можете рассмотреть возможность обновления постоянных ссылок для пользовательского типа записи, чтобы использовать '
/movies/
slug. Например, если вы/films/
перейдете к , вы увидите список всех ваших фильмов, но наведение курсора на заголовок покажет, что/movies/
слаг все еще используется.Чтобы сделать еще один шаг, вы можете технически установить перенаправление 301, чтобы перехватить все ссылки, на которые
/movies/
нужно перенаправить своего/films/
партнера, но все это зависит от того, что вы пытаетесь сделать.источник
$post
этуadd_custom_rewrite_rule()
функцию, но она выдает ошибки в WP Admin, говорящие «Попытка получить свойство не-объекта». Как я могу получить $ post, чтобы получить мета-значение?Этот код хорошо работал для моей детской темы. Нужно поменять «программный» слаг на «место».
источник
$args['has_archive'] = false
и это сработало.