Безопасный способ Wordpress для личных/общедоступных сообщений

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

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

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

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

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

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

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

Спасибо


person invamped    schedule 08.05.2013    source источник


Ответы (2)


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

$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);
person RafH    schedule 09.05.2013
comment
Хорошо, да, это тоже отлично работает, спасибо. Вы не знаете, есть ли способ расширить этот сайт? вместо того, чтобы добавлять его в каждый запрос? если это имеет смысл. ура за вход - person invamped; 09.05.2013
comment
Я не знаю, возможно ли изменить значения по умолчанию WP Query чистым способом, возможно, вы могли бы спросить здесь wordpress.stackexchange.com - person RafH; 09.05.2013
comment
Хорошо, еще раз спасибо за вашу помощь. Хм, может быть, я могу добавить его в function.php? - person invamped; 09.05.2013

Я считаю, что в вашем случае наиболее подходящим является использование возможностей WordPress. Редакторы уже могут просматривать приватные посты/страницы во внешнем интерфейсе, если вошли в систему (поскольку у них есть возможность 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 вашей темы.

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