2009-06-16 7 views
7

На новой установке WordPress 2.8 у меня есть сообщения, присваиваемые категории Foo, которые ранее были публичными, но с тех пор были закрыты. Когда я вошел в WordPress (как администратор), а также просматриваю страницу категории Foo на другой вкладке в том же браузере, я могу видеть частные сообщения на странице категории, причем заголовки записей с префиксом слова " ЧАСТНЫЙ: ".WordPress отображает личные сообщения для зарегистрированных пользователей - как отключить эту функцию?

Теперь ничто не "сломано" об этом - сообщения корректно скрыты от незарегистрированных пользователей. Но я не хочу, чтобы вошедшие в систему пользователи видели частные сообщения на реальном сайте, потому что, откровенно говоря, это просто раздражает, а не полезно.

Что мне делать с WP Loop на странице архива категорий или в файле функций, чтобы отключить эту нежелательную возможность видеть личные сообщения на сайте?

+0

Неужели администраторы не видят их тоже? – jitter

+0

Это потому, что у вашего администратора есть несколько больше разрешений для обычных пользователей? Пробовали ли вы создать стандартного пользователя «Абонент» и посмотреть, есть ли у вас такая же проблема? – Amadiere

+0

В системе есть только два пользователя, оба администратора. Я не хочу видеть частные сообщения в этом блоге (в интерфейсе, я имею в виду, вы знаете, просматривая сайт, как пользователь) во время входа в систему. Поэтому создание пользователя «подписчика» не помогло бы этому вопросу - я все равно необходимо войти в систему как администратор, чтобы выполнять обслуживание сайта и т. д. – Asparagirl

ответ

18

Рубить способ сделать то, что вы хотите, чтобы поставить эту строку кода в верхней части цикла (после the_post() часть:

if(get_post_status()=='private') continue; 

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

Правильный способ сделать это - добавить фильтр, который модифицирует SQL, используемый для генерации t он список сообщений. Трудная часть состоит в том, чтобы не фильтровать его, если вы находитесь в разделе администратора, иначе вы больше никогда не увидите свои личные сообщения. Лучшее место для этого фильтра находится в файле 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' "; 
} 
+0

Я столкнулся с той же проблемой для своего Wordpress. Ваше решение выглядит применимым. Можете ли вы сказать, что связано с файлом php? и, где следует add_filter ('posts_where', 'no_privates'); быть добавленным? – Elaine

+0

Спасибо за ответ! Решила мою проблему и не могла найти ее нигде в Интернете. –

+0

+ Elaine Файл php является functions.php и находится в вашем каталоге тем. Вы можете добавить этот код почти в любом месте в functions.php, например, непосредственно после

0

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

<?php if (in_category('3')) continue; ?> 

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

1

Так что, если никто не рассматривать эти личные сообщения, включая администратор, почему не только установить свой статус неопубликованных или проект?

+0

Одна из причин заключается в том, что у вас есть тонна пользователей, и они настраивают сообщения на личные, хотя, как вы сказали, неопубликованные или черновики будут лучшим решением. –