Intereting Posts

Удалить базу таксономии или термин из URL-адреса

Я знаю, что здесь много сообщений об этом, но никто из них не ответил на мою проблему.

Я работаю с настраиваемой темой, которая имеет собственный тип категории (по имени messagetypes). У меня есть категория, созданная с именем media. Эта тема настроена так, что я могу добавить элемент меню, который при щелчке отображает все элементы с меткой носителя, но URL-адрес страницы – это mysite.com/messagetypes/media. Я хочу удалить messateypes из url и иметь его только mysite.com/media.

Самое близкое, что я получил, – это когда я добавляю на страницу пользовательских категорий функций, где

register_taxonomy( 'messagetypes', ... 

вызывается с

 'rewrite' => array( 'slug' => ''), 

Когда я это делаю, я получаю желаемый результат с этой страницы, но все мои другие ссылки на страницы ломаются (используя постоянные ссылки).

Я также попытался добавить в массив перезаписи

 'with_front' => false 

но это тоже не сработало.

Любая помощь или понимание были бы замечательными. Я потратил слишком много часов на это, и это заводит меня с ума.

Благодарю.

Когда я это делаю, я получаю желаемый результат с этой страницы, но все мои другие ссылки на страницы ломаются (используя постоянные ссылки).

Потому что, просто, у WordPress нет подсказки, которую вы запрашиваете для страницы. Он делает то, что вы ему сказали;

Для всех URL-адресов, которые выглядят как http://example.com/X , найдите сообщения с типом messagetype X

Вот почему вам нужен «идентификатор»; так что он может различать разницу между запросами на страницы, архивы, категории …

Если вы действительно хотите эту функциональность, добавление verbose rewrite rules в верхней части переписывающей карты было бы способом;

 add_rewrite_rule( 'media/?$', 'index.php?messagetypes=media', 'top' ); 

Если у вас много сообщений об ошибках, вы можете захотеть подключиться к созданию и удалению терминов и динамически обновлять и обновлять правила перезаписи.

В противном случае повторите пример для каждого термина в вашем файле functions.php , а затем промойте свои постоянные ссылки (просто перейдите на страницу параметров permalink в admin).

Последнее, верните свой вызов register_taxonomy 'back to normal', т. term_link аргумент rewrite и используйте фильтр term_link для свопинга в пользовательской permalink;

 function __custom_messagetypes_link( $link, $term, $taxonomy ) { if ( $taxonomy !== 'messagetypes' ) return $link; return str_replace( 'messagetypes/', '', $link ); } add_filter( 'term_link', '__custom_messagetypes_link', 10, 3 );