/ Wordpress / Отключить категорию, метку

Отключить категорию, метку

HIT

29.11.2016

5034

У терминов таксономий (категории, метки) WordPress отсутствует функция отключения, их можно только удалить. Это не всегда удобно, при этом термин удаляется и из всех записей к которым он привязан. Бывает необходимость отключать (временно) метку или категорию.

Отключаем архив метки, категории

Прописываем в функциях переадресацию. В данном примере отключаем метку test.

//Отключение терминов таксономии

add_action('template_redirect', 'meks_remove_wp_archives');
 
function meks_remove_wp_archives(){

  if( is_tag('test') ) {
    global $wp_query;
    $wp_query->set_404();
  }
}

Также можно отключать все что угодно: is_category(), is_tag(), is_date(), is_author() и т.д.
Если нужно отключить категорию и записи принадлежащие ей, то прописываем условие in_category.

Если нужно отключить и подкатегории с записями, нужно прописывать их в массив in_category( array( 4, 21, 22 ) )

Отключить метку, категорию из поста

wp_delete_object_term_relationships() удаляет связи между всеми объектами указанной таксономии. Но нам надо получить временный эффект.

Задал по этому поводу вопрос на сайте wp-kama.ru и получил следующие ответы:

1. Как мне кажется надо пересобрать массив из актуальных терминов таксономии используя фильтр http://wp-kama.ru/hook/list_terms_exclusions или http://wp-kama.ru/hook/pre_get_terms
Не тестил… не уверен что нужный хук… но искал бы инфо в этом направлении.

2. Запиши все текущии записи метки в метаполе метки (термина). И удали все записи из метки… Потом когда надо будет вернуть, помести все записи обратно в метку по ID записей из сохраненного метаполя…
Для удаления поста из метки юзай: wp_remove_object_terms()
Для помещения поста в метку юзай: wp_set_object_terms()
Для метаполей термина юзай update_term_meta() и get_term_meta()
Вот тебе и временное удаление. При этом не придется вставлять разные костыли и ловить баги, что где-то что-то вылезло… Все будет в рамках логики WP.

Кнопка отключить

Сделать функционал отключения метки или категории в автоматическом режиме кнопкой отключить

Появились мысли на эту тему. Что если для категорий, либо для любого другого термина, завести поле, например disable_cat. И при этом в выводе категорий/подкатегорий указать это поле в аргументы параметра $meta_query запроса.

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Автоматическая разбивка записей по тегам

Автоматическая разбивка записей по тегам

Автоматически разбиваем записи определенной категории по тегам. Подробнее: у нас есть определенное количество записей в какой-либо категории, при этом у некоторых записей заданы теги. Выводится будет так: Сначала записи с Читать далее »

Шорткод вывода товаров по метке

Шорткод вывода товаров по метке

Иногда требуется быстро вывести товары с определенной меткой. Данный шорткод проверял лично — работает. В данной функции предусмотрен вывод товаров по колонкам (wc_get_loop_prop( ‘columns’ )). Шорткод выглядит так: Данный шорткод Читать далее »

/
Список меток текущей категории

Список меток текущей категории

Формируем и выводим список меток текущей категории. Вариант в файл funсtion.php function get_category_tags($cats) { global $wpdb; $tags = $wpdb->get_results (" SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, t2.count as Читать далее »

/

Добавить комментарий

Пока нет комментариев. Будь первым!

Отключить категорию, метку
Кнопка с мессенджерами
Рекомендации для васКнопка с мессенджерамиOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.