Intereting Posts
Является ли встроенный обновитель «лучшим» способом обновления установок WP? Как я могу очистить кэширование oEmbed для YouTube в сообщениях по мере их загрузки Отдельные таблицы базы данных для разных типов сообщений Сортировка результатов поиска по пользовательскому полю Планируемое событие WordPress не работает Используйте стандартные категории WordPress с CPT Дешифровать файл стиля CSS из WP footer Как получить все сообщения, относящиеся к определенному названию категории? wp_localize_script, переменная не определена в jquery Категории в модуле загрузки Миниатюра сообщения не отображается в области администрирования WP для пользовательского типа сообщения Как добавить столбец на страницу «Корзина»? Как вставить js-скрипт в нижний колонтитул, который не находится в .js-файле? Использовать готовый массив как категории в wp_query? wp_list_comments отображает неправильно вложенные <ul>

Как полностью отключить архив таксономии на интерфейсе?

Я зарегистрировал три пользовательских таксономии. Все три этих пользовательских таксономии привязаны к моему пользовательскому типу сообщений.

Из трех зарегистрированных существует только одна таксономия, что я бы хотел не получить доступ к тому, что когда-либо было на интерфейсе веб-сайта.

Какое лучшее решение для этого?

Я играю с указанием разных аргументов при регистрации таксономии, но ничего не работает.

$args['show_in_nav_menus'] = false; $args['query_var'] = false; $args['public'] = false; 

Должен ли я просто подключиться к template_redirect и выполнить is_tax() ? Если это таксономия, которую я хочу отключить, просто переадресовывайтесь в архив настраиваемого типа сообщений?

Solutions Collecting From Web of "Как полностью отключить архив таксономии на интерфейсе?"

Ответ s_ha_dum не работал для меня, но это произошло:

 /** * Completely disable term archives for this taxonomy. * @param string $taxonomy WordPress taxnomy name */ function kill_taxonomy_archive($taxonomy){ add_action('pre_get_posts', function($qry) { if (is_admin()) return; if (is_tax($taxonomy)){ $qry->set_404(); } } ); } 

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

 add_action( 'pre_get_posts', function($qry) { if (is_admin()) return; $kill = 'genre'; // kill this taxonomy $tax_query = $qry->get('tax_query'); if (empty($tax_query)) return; $relation = false; if (isset($tax_query['relation'])) { $relation = $tax_query['relation']; unset($tax_query['relation']); } foreach ($tax_query as $k => &$tax) { if (isset($tax['taxonomy']) && 'genre' === $tax['taxonomy']) { unset($tax_query[$k]); } } if (1 < count($tax_query)) { $tax_query['relation'] = $relation; } $qry->set('tax_query',$tax_query); } ); с add_action( 'pre_get_posts', function($qry) { if (is_admin()) return; $kill = 'genre'; // kill this taxonomy $tax_query = $qry->get('tax_query'); if (empty($tax_query)) return; $relation = false; if (isset($tax_query['relation'])) { $relation = $tax_query['relation']; unset($tax_query['relation']); } foreach ($tax_query as $k => &$tax) { if (isset($tax['taxonomy']) && 'genre' === $tax['taxonomy']) { unset($tax_query[$k]); } } if (1 < count($tax_query)) { $tax_query['relation'] = $relation; } $qry->set('tax_query',$tax_query); } ); с add_action( 'pre_get_posts', function($qry) { if (is_admin()) return; $kill = 'genre'; // kill this taxonomy $tax_query = $qry->get('tax_query'); if (empty($tax_query)) return; $relation = false; if (isset($tax_query['relation'])) { $relation = $tax_query['relation']; unset($tax_query['relation']); } foreach ($tax_query as $k => &$tax) { if (isset($tax['taxonomy']) && 'genre' === $tax['taxonomy']) { unset($tax_query[$k]); } } if (1 < count($tax_query)) { $tax_query['relation'] = $relation; } $qry->set('tax_query',$tax_query); } ); 

Использование закрытия должно сделать обратный вызов трудно удалить.

Вы также можете реализовать перенаправление, как вы предполагали, но это не помешает вторичным запросам в шаблонах страниц или виджетах получать таксономию или может вызвать проблемы, если вы попытаетесь перенаправить в конце загрузки страницы.