Временно отключить категорию, метку или элемент таксономии
Бьюсь над таким, казалось бы, простым функционалом как отключение метки. Удалять не нужно ,т.к. заполнена страница метки (используется как производитель) и назначена определенному множеству записей. Но есть потребность на время ее отключить.
Мне удалось сделать скрыть шаблона архив данной метки, но довольно таки грубо..:
//Отключение терминов таксономии add_action('template_redirect', 'meks_remove_wp_archives'); function meks_remove_wp_archives(){ if( is_tag('test') ) { global $wp_query; $wp_query->set_404(); } }
При этом вывод метки все равно останется в товаре.
Есть ли какой-то способ временно отключать связи между записями и таксономиями (я думаю подобный функционал был бы полезен)?
Временное отключение wp_delete_object_term_relationships() для определенной таксономии (категории, метки, пользовательской) возможно?
Как мне кажется надо пересобрать массив из актуальных терминов таксономии используя фильтр http://wp-kama.ru/hook/list_terms_exclusions или http://wp-kama.ru/hook/pre_get_terms
Не тестил... не уверен что нужный хук... но искал бы инфо в этом направлении
Запиши все текущии записи метки в метаполе метки (термина). И удали все записи из метки... Потом когда надо будет вернуть, помести все записи обратно в метку по ID записей из сохраненного метаполя...
Для удаления поста из метки юзай: wp_remove_object_terms()
Для помещения поста в метку юзай: wp_set_object_terms()
Для метаполей термина юзай update_term_meta() и get_term_meta()
Вот тебе и временное удаление. При этом не придется вставлять разные костыли и ловить баги, что где-то что-то вылезло... Все будет в рамках логики WP.