возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено: 2024-02-13 в теме: Контент, шапка site
Запросто с WordPress создание и продвижение сайтов ATs media

Как исключить вывод (выборочно) поста с главной страницы сайта – регулировка в админке

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

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

Регулировки удаления/показа поста выполняются из админки – текстового редактора (скрин ниже)

Ну, ладно – вперёд…


 

 

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

 

 

 

как удалить пост только с главной страницы

 

 

 

Однако, чтобы этот ловкий чекбокс появился в текстовом редакторе вордпресс, нужно прописать показанный код ниже в файл functions.php функций вашей активной темы.

 

Прописывают обычно перед значком ?> однако, я всегда советую группировать код по логике функций, понятности для…

 

 

открыть код

/** исключаем вывод поста с главной страницы сайта **/
/** функционал кода срабатывает на странице содержащей все записи блога... **/
if( ! get_option('page_on_front') || get_option('page_for_posts') ){
// чекбокс для исключения
add_action('post_submitbox_misc_actions', 'epfp_fields_box_func');
// включаем обновление полей при сохранении
add_action('save_post', 'epfp_fields_update', 0);
// Исключает вывод постов из списка "помеченных"
add_action('pre_get_posts', 'epfp_exclude_posts');
// Выводит виджет с настройками при публикации/редактировании поста
function epfp_fields_box_func( $post ){
$exclude = get_post_meta( $post->ID, 'epfp_exclude_post', 1);

echo '<div class="misc-pub-section">
<input type="hidden" name="epfp[epfp_exclude_post]" value="" />
<label><input type="checkbox" name="epfp[epfp_exclude_post]" value="1" '. checked( 1, $exclude, 0 ) .' /> убрать запись с главной?</label>
</div>';
}
// Сохранение данных виджет
function epfp_fields_update( $post_id ){
if( !isset($_POST['epfp']) || ! is_admin() || ! wp_verify_nonce( $_POST['_wpnonce'], 'update-post_'. $post_id ) )
return false; // базовая проверка не пройдена

if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return false; // автосохранение

if ( ! current_user_can('edit_post', $post_id) )
return false; // юзер не имеет право редактировать запись
// сохраняем/удаляем данные
$epfp = array_map('trim', $_POST['epfp']);

foreach( $epfp as $key => $value ){
if( empty($value) ){
delete_post_meta( $post_id, $key ); // удаляем поле если значение пустое
continue;
}

update_post_meta( $post_id, $key, $value ); // add_post_meta() работает автоматически
}

return $post_id;
}
// Исключает вывод постов из списка "помеченных"
function epfp_exclude_posts( $query ) {
if ( $query->is_main_query() && ( $query->is_front_page() || $query->is_home ) ) {
$query->set(
'meta_query', array([ 'key'=>'epfp_exclude_post', 'compare'=>'NOT EXISTS' ])
);
}
}
}
/** ФИН исключаем вывод поста с главной страницы сайта **/

 

 

В комментариях даны необходимые пояснения… достаточно подробно.

 

 

Но, коли что не ясно из кода или общего принципа запрещения вывода определённой записи на домашней странице, обращайтесь… есть же комментарии…

 

 

 

 

Как исключить вывод поста на главной страничке сайта – посредством плагина

 

 

 

 

Если будете использовать вариант плагина, желательно бы поставить имя автора (организации) пример кода ниже…

Насколько я знаю – автор кода Campusboy

 

…или как-то указать авторство: это правильно в плане порядочности, и вообще… как сделать плагин правильно, узнаете из статьи, ссылка на которую ниже…

 

 

/*
Plugin Name: Exclude Posts Front Page (epfp)
Description: Плагин позволяет исключить вывод помеченных постов с главной страницы сайта. Пометка ставиться при публикации/редактировании поста.
Author: Campusboy
Author URI: http://wp-plus.ru/
Version: 2.0
*/

 

 

сайт автора (совместно с wp_kama) кода запрета отображения записи на главной странице: //wp-plus.ru/

 

 

 

Как эпилог:

 

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

Милости прошу, пройти по ссылке Создаём плагин — добавочный файл функций — my-functions и ознакомиться

 

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

Словом, прочтите и увидите…

 

 

 


На этом занавес представления опускается…
…на рампы пыль печальная ложится…

 


подписка feedburner Online консультация по настройкам и созданию сайтов на WordPress

 

 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...





Нажатия на кнопочки определяют Ваше высокое гражданское сознание

Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©


  1. Очень нужная функция. Но видимо с новыми версиями Вордпресс она не работает. Возможно ли обновить его под новые версии Вордпресс?

    Ответить - Дима

    • Здравствуйте, Дима!
      Функционал, данный в статье, замечательно отрабатывает со всеми новейшими версиями WordPress – а в том числе и с WP 5.6…
      Возможно, вы где-то допустили ошибку в реализации задачи.
      Тестируйте с прежним текстовым редактором (не Гутенберг). а далее переносите в новый…

      Ответить - Михаил

      • В Гутенберге и не работает. Не появляется поле с чекбоксом в редакторе поста

        Ответить - Дима

        • Эта статья для пользователей прежним редактором. Скоро напишу свежую статью по Гутенбергу.

          Ответить - Михаил

          • Спасибо! Буду ждать

            Ответить - Дима