Не показывать личные (private) записи WordPress

В используемой теме WordPress в блоге записей появляются записи, опубликованные как "Личное" (их видят авторизованные автор и администратор сайта). Задача: не показывать личные записи на главной странице.


В классическом редакторе

Если тема WordPress показывает авторизованному посетителю на главной странице сайта  все опубликованные записи, включая личные (private), значит добавлен статус записей private:

$args = array(
'post_status' => array( 'publish', 'private' ),
...
);
$query = new WP_Query( $args );

Если нужны только 'publish' , изменим запрос в файле functions.php дочерней темы:

/**
*
* Изменяем главный цикл WordPress, чтобы показывать на главной странице  
* только опубликованные общедоступные записи.
*
*/
function mbm_show_only_publish($query){
 if ( $query->is_home() && $query->is_main_query() && ! is_admin() ) {
  $query->set( 'post_status', 'publish' );
 }
}
add_action('pre_get_posts','mbm_show_only_publish');

Условие $query->is_home()  можно убрать, чтобы везде на сайте показывать только 'publish' записи, например, на страницах рубрик.

/*
Чтобы автор мог просматривать свои личные записи, 
добавляем условие ! is_single()
*/
if ( $query->is_main_query() && ! is_admin() && ! is_single() )

В списках записей личные записи как и черновики  будут доступны в админке в Записи - Личные
(.../wp-admin/edit.php?post_status=private&post_type=post)

Записи Все | Опубликованные | Черновики | Личные | Корзина 

В редакторе блоков

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