Перейти к содержимому

Авторский блог Алексея Зайцева

Математика Экономика Физика

Меню
  • Проверка правописания английских слов
  • Прописи 1 класс
  • Словарный диктант по русскому языку
  • Страница оплаты
  • Тренажер по арифметике
  • Тренажер по дробям
Меню
Цены в СССР 1958 года глазами американского журналистаЦены в СССРА вы знает, что именно Сталин уничтожил российскую деревню?Зеленые бунтуют и требуют повысить цены на зеленое электричествоДумает ли искусственный интеллектПозвонили из Следственного комитетаИз-за неплательщиков, на электричество поднимут ценыFinancial Times: стоимость возобновляемой энергетики снизилась на 20% за 2Теплота сгорания компонентов природного газа согласно ГОСТЭнтальпия образованияТермодинамика солнечных панелей: можно ли солнечными лучами нагрВ каких единицах измеряется ядерная энергия и энергетические харНовые производства России, открытые в 2020 годуХотите зарабатывать 200 000? Вам уже поздно, но есть шанс у ваших детеСлучай на экзамене: как вместо 5 получилось 2Кидок Google – бесплатный объем для фото-видео ограничат 15ГБ. СамоНаше будущее – распределенная генерация, но все новое – хороНиконовы: Прадед Василий и прабабушка ПелагеяЗайцевы: Прадед Михей, его брат Архип и дед ПавелАльткотельная: что это такое и где обманываютБлаготворительность: за и противПроблемы современного образованияДо властей дошло – снижения ставки по ипотеке не делает жилье дАдекватность школьного курса математикиМожно ли увеличить мощность передаваемую по кабелюКак продолжительный карантин скажется на здоровьеСроки эпидемииКак наблюдать взаимное сокращение длины в обычной жизни, без всякЕГЭ по математике в дурдомеНидерланды: вход в закон евро, выход дваПутешествие бутылки из России в ГерманиюВызов России в Нагорный КарабахТеплота сгорания метана, бутана и пропанаНавальный стал совсем плохЭкспериментальная проверка парадокса близнецовВласти борются с анонимностью в интернете путем арестовСберМаркет: какое будущее нас ждетСравнение зависимости бюджета России от нефти 2011 и в 2021 годуНавальный обходит ПутинаСША: убийственные данные по эпидемииСоздателя Nexta будут судить?Парадокса близнецов нет: объяснение на школьном уровнеСкладывается впечатление, что пенсию скоро вообще отменятКак бухают американцыКак “прямо” проверить постоянство скорости светаВ чем суть парадокса “Парадокс близнецов”Мы говорим навальный, подразумеваем Скрипаль. Мы говорим СкрипалКак сделать видеонаблюдение на даче?ОСАГО: кто виноват и что делатьСтраховые компании мошенничают с ОСАГО?Половина американцев не имеют свободных 100 долларовИмеют ли США право вводить санкции?Сколько платят за ЖКХ в США50% американцев получают от правительства больше денег, чем отдаютРаковая опухоль Белоруссии

Как исключить записи, входящие в некоторые категории, из ленты и постов WordPress.

Опубликовано в 28 сентября, 2016

Иногда возникает необходимость исключить некоторые посты/записи из ленты постов/записей. Это может потребоваться для записей которые не “ложатся” в основное направление сайта. Например, на этом сайте, посвященном самостоятельным путешествиям, да еще в режиме дневника, когда следующая запись это следующий отрезок путешествия, будет странно выглядеть, например, такая последовательность постов.

День 55-56 : Орландо — Галтинберг. Great Smokey Mountains. Восточное США и Карибы!

День 42 — 54: Две недели в Орландо. Апартаменты Club Orlando. Восточное США и Карибы!

Что противопоставить нефтедоллару.

День 41: Круиз по Багамам завершён, едем в Орландо. Восточное США и Карибы!

Я пробовал для таких “нетипичных” записей использовать страницы. Но страницы имеют множество ограничений по функционалу, например, их нельзя группировать в рубрики, у страницы нет предыдущей/следующей страницы и тд.

Публиковать такие посты/зписи где то в другом месте, тоже не совсем логично (конечно если у вас не несколько блогов разной тематики!)) ).

Для исключения постов/записей из ленты есть простое решение – плагин Ultimate Category Excluder. В нем просто отмечаете какие категории/рубрики нужно исключить из ленты и все. Конечно посты/записи, которые необходимо исключить, должны находиться в отдельных категориях/рубриках.

Подчеркну, что это не “прятание” постов/записей и их категорий/рубрик. Например, они остаются видны и доступны в виджете категорий/рубрик (если конечно вы не настроили их исключение и там, некоторые виджеты это позволяют).

Так же есть решения не на основе плагина, а на основе кода.

Но у все этих решений есть один существенный недостаток.

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

В интернете я нашел решение в виде кода как удалить посты/записи из “исключенных” категорий/рубрик. Но оно полностью удаляет посты/записи из исключенных категорий/рубрик, даже когда читается пост/запись из исключенной категории/рубрики. А это не совсем логично, например если кто-то читает пост про Парадокс близнецов, логично будет показать что есть предыдущий пост/запись из этой категории/рубрики Легенды и мифы детонационных двигателей, и следующий –  О теориях относительности.

С помощью rikitikitari я модифицировал код так, что бы работал по принципу – при просмотре кода из “исключенных” категорий/рубрик, в блоке предыдущий следующий пост/запись отображались и  посты из категорий/рубрик в которые входит этот пост/запись.

 function exclude_cat_from_previous_next_JOIN( $join = null, $in_same_cat = false, $excluded_categories = '' ) {
    if ( is_admin() ) {
        return $join;
    } else {
        global $wpdb;
        // NOTE: The p in p.ID is assigned from $wpdb->posts in the get_adjacent_post function.
        return $join." INNER JOIN $wpdb->term_relationships ON 
                      (p.ID = $wpdb->term_relationships.object_id) 
                      INNER JOIN $wpdb->term_taxonomy ON 
                      ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)";			
    }
}
add_filter( 'get_next_post_join', 'exclude_cat_from_previous_next_JOIN', 10, 3 );
add_filter( 'get_previous_post_join', 'exclude_cat_from_previous_next_JOIN', 10, 3 );
	
function exclude_cat_from_previous_next_WHERE( $where = null, $in_same_cat = false, $excluded_categories = '' ) {
    if ( is_admin() ) {
        return $where;
    } else {
        global $wpdb;;
        $exclude = '681, 682, 683, 684'; //The IDs of the categories to exclude.
// Разобьем строку на массив
$exclude_array = explode( ',', $exclude );
// Уберем пробелы в каждом элементе
$exclude_array = array_map( 'trim', $exclude_array );
// Тут получим текущий пост
global $post;
// массив объектов его категорий
$my_post_id=get_the_ID( ); 
$cats = get_the_category( $post->ID );
// Создадим массив для id категорий
$cats_array = array();
// Заполним массив id
foreach( $cats as $category ) {
  array_push( $cats_array, $category->cat_ID );
}
// Удаляем из массива "сключенных категорий" категории в которых содержится текущий пост
$result = array();
$result = array_diff ($exclude_array, $cats_array);
//создаем строковую переменную из элементов массива $result, с разделенными точкой и пробелами элементами
$result2='';
foreach ($result as &$value) {
    $result2 .= "$value";
	$result2 .= ', ';
}
		$result2 = rtrim($result2, ", ");
        $result2 = apply_filters( 'exclude_cat_from_previous_next_WHERE_filter', $result2 );

        return $where." AND $wpdb->term_taxonomy.taxonomy = 'category' 
                        AND $wpdb->term_taxonomy.term_id NOT IN ($result2)";
    }
}
add_filter( 'get_next_post_where', 'exclude_cat_from_previous_next_WHERE', 10, 3);
add_filter( 'get_previous_post_where', 'exclude_cat_from_previous_next_WHERE', 10, 3);

Этот код, чтобы он не слетал при каждом обновлении, я вставил на сайт с помощью плагина Add Shortcodes Actions And Filters.

Результат работы двух плагинов и кода вы можете видеть в конце этой статьи!))

Ну а если вы сможете предложить более “правильное” решение – пишите!!

[box type=”note” align=”” class=”” width=””]Это моя статья с моего старого сайта о путешествиях selftrips.ru. Тогда у меня не было другого сайта, и я публиковал там совершенно не тематические статьи.Теперь переношу сюда. Дата оригинальной статьи.[/box]

© Копирование и перепечатка материалов только с разрешения автора

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • Глобальные проблемы
  • Информационные технологии
  • История семьи и рода Зайцевых
  • Космос
  • Мировая экономика
  • Наука
  • Общество
  • Политика
  • Справочники
  • Украина
  • Экология
  • Экономика
  • Электромобили
  • Энергетика

Метки

IT SpaceX Wordpress Авиация Белоруссия Газ Газпром Дети ЕС Европа Заработок Исследования История Китай Коронавирус Космос Кризис Криминал Курс доллара Курс рубля Математика Наука Нефть ОТО Общество Олигархи Перспективы Политика Правоохранительная система Прогноз Путин Россия СССР СТО США Саудовская Аравия Суд Туризм Украина Физика Финансы Фондовый рынок Школьные знания Экономика Эпидемия

Архивы

  • Ноябрь 2023
  • Октябрь 2023
  • Октябрь 2022
  • Июль 2022
  • Ноябрь 2021
  • Март 2021
  • Декабрь 2020
  • Ноябрь 2020
  • Октябрь 2020
  • Сентябрь 2020
  • Август 2020
  • Июль 2020
  • Июнь 2020
  • Май 2020
  • Апрель 2020
  • Март 2020
  • Февраль 2020
  • Январь 2020
  • Декабрь 2019
  • Ноябрь 2019
  • Октябрь 2019
  • Сентябрь 2019
  • Август 2019
  • Июль 2019
  • Июнь 2019
  • Февраль 2019
  • Январь 2019
  • Сентябрь 2018
  • Декабрь 2017
  • Октябрь 2017
  • Сентябрь 2017
  • Июнь 2017
  • Май 2017
  • Декабрь 2016
  • Ноябрь 2016
  • Сентябрь 2016
  • Август 2016
  • Июль 2016
  • Июнь 2016
  • Апрель 2016
  • Март 2016
  • Декабрь 2015
  • Ноябрь 2015
  • Февраль 2015
  • Декабрь 2014
Подписанты
Копии статей могут размещаться на Дзен канале "Все о льготах"
©2025 Авторский блог Алексея Зайцева | Дизайн: Газетная тема WordPress