Ниже будет предложена пара способов решения задачи, когда администратору сайта требуется исключить какой-то пост (запись) в выводе или формировании главной страницы.
Варианты спокойно реализуются посредством отдельного плагина (как это делается, ссылку дам ниже) или обычной пропиской в файл функций 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 и ознакомиться
Кстати, в созданный плагин возможно и оч. запросто добавить какие-то свои уже существующие в недрах сайта функции, отвечающие за функционал сайта (не шаблона) и которым не место в теме: например таких, как в этих статьях.
Словом, прочтите и увидите…
На этом занавес представления опускается…
…на рампы пыль печальная ложится…
Online консультация по настройкам и созданию сайтов на WordPress
mihalica.ru !
Очень нужная функция. Но видимо с новыми версиями Вордпресс она не работает. Возможно ли обновить его под новые версии Вордпресс?
Здравствуйте, Дима!
Функционал, данный в статье, замечательно отрабатывает со всеми новейшими версиями WordPress – а в том числе и с WP 5.6…
Возможно, вы где-то допустили ошибку в реализации задачи.
Тестируйте с прежним текстовым редактором (не Гутенберг). а далее переносите в новый…
В Гутенберге и не работает. Не появляется поле с чекбоксом в редакторе поста
Эта статья для пользователей прежним редактором. Скоро напишу свежую статью по Гутенбергу.
Спасибо! Буду ждать