2013-05-08 6 views
0

Я задал несколько вопросов, пытаясь решить эту простую проблему, но ничего не работает.Wordpress безопасный способ иметь частные/публичные сообщения

Какой рекомендуемый способ иметь частные/публичные сообщения? Я хочу иметь сайт, который, если автор/редактор/администратор регистрируется в каждом частном сообщении, а публичный пост доступен для просмотра/поиска. Если пользователь не регистрируется только в публичных сообщениях, доступных для просмотра.

Я думал о/пытался сделать это несколькими способами. Простым способом я достиг этого путем использования WP_Query для включения/исключения всех сообщений с настраиваемым полем «Частный» при входе/выходе.

Хотя это сработало хорошо, у меня есть две проблемы с ним, насколько это безопасно? и для него требуется настраиваемое поле, когда Wordpress уже имеет функции частного сообщения.

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

Использование встроенных функций Wordpress - это мой метод perferrred, но просто не могу заставить его работать правильно.

любые предложения или помощь? Кто-то, должно быть, сделал это без необходимости в специальном поле?

благодарит

ответ

0

Вам не нужно использовать мета-поле, чтобы получить личные сообщения, его доступные на параметре post_status сор запроса.

$args = array('post_status' => array('publish')); // regular users 
if (is_user_logged_in()) { 
    // signed in users 
    $args['post_status'][] = 'private'; 
} 

$query = new WP_Query($args); 
+0

Хорошо, да, похоже, это отлично работает, спасибо. Знаете ли вы, насколько я могу сделать этот сайт широким? а не добавлять его к каждому запросу? если это имеет смысл. приветствия для ввода – invamped

+0

Я не знаю, возможно ли изменить значения по умолчанию WP Query по-умолчанию, возможно, вы могли бы попросить здесь http://wordpress.stackexchange.com/ – RafH

+0

Хорошо, спасибо за вашу помощь. Хм, может быть, я могу добавить его в функцию.php? – invamped

0

Я считаю, что наиболее подходящим в вашем случае является использование WordPress capabilities. Редакторы уже могут просматривать частные сообщения/страницы на интерфейсе, если они вошли в систему (поскольку они имеют возможность read_private_posts).

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

function so0805_init_theme_add_capabilities(){ 
    /* allow authors to view private posts and pages */ 
    $role_author = get_role('author'); 
    $role_author->add_cap('read_private_pages'); 
    $role_author->add_cap('read_private_posts'); 

} 
add_action('init', 'so0805_init_theme_add_capabilities'); 

Вставьте этот код в functions.php вашей темы.

+1

Это показывает личное сообщение, написанное автором и позволяет авторам просматривать личные сообщения на экране редактирования и через single.php, но не отображается в цикле первой страницы. Я что-то упускаю? благодаря – invamped

Смежные вопросы