Взломать способ сделать то, что вы хотите, это поместить эту строку кода в верхней части цикла (после the_post () part:
if( get_post_status()=='private' ) continue;
Это хакерский способ, потому что ваш WordPress все еще загружает это сообщение из базы данных и учитывает его для подсчета сообщений и т. Д., Но пропускает его при отображении. Если вы ищете фразу, которая была только в личных сообщениях, вы получите пустую страницу без ошибок, например.
Правильный способ сделать это - добавить фильтр, который модифицирует SQL, используемый для генерации списка постов. Самое сложное - не фильтровать его, если вы находитесь в разделе администратора, иначе вы никогда больше не увидите свои личные сообщения. Лучшее место для этого фильтра - файл functions.php вашей темы. Вот что вы должны добавить туда:
add_filter('posts_where', 'no_privates');
function no_privates($where) {
if( is_admin() ) return $where;
global $wpdb;
return " $where AND {$wpdb->posts}.post_status != 'private' ";
}