Intereting Posts
Как сделать мгновенное обновление частичной силы Customizer мгновенно? Пользовательская форма, короткий код и отправитель Несколько записей в результатах get_option? или почему _multiwidget установлен в 1? Существует ли функция WordPress replace_hello ()? WordPress TinyMCE: получить значение всплывающей кнопки После создания новой страницы заполнение страницы структурой Текстовая форма виджета и переменные URL woocommerce позволяет пользователям выбирать или использовать аватар Тип сообщения о событиях запроса после текущей даты и часового пояса Как добавить изображение в заголовок сообщения? Как я могу выполнить небольшой фрагмент кода PHP в изолированной области моего WP? Слушать wordpress независимо от cname Изменен синглэйт для мультисайта, но новый сайт показывает обслуживание Последовательный однопользовательский запрос Ajax не работает, когда не зарегистрирован Как вставить сообщение из внешнего php-файла?

Как сделать запланированный просмотр сообщений видимым для всех?

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

Есть ли способ, возможно, параметр строки запроса, чтобы сделать предварительный просмотр сообщения кем угодно, а также анонимными пользователями? Что-то вроде my-post?previewsecret=645732116468 ?

Предварительный просмотр

Посмотрите на этот кусок кода ядра в query.php, который

[Проверяет] статус сообщения, чтобы определить, должна ли отображаться почта.

http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/query.php#L2658

 if ( ! is_user_logged_in() ) { // User must be logged in to view unpublished posts. $this->posts = array(); } 

… то, что делает его несколько непростым для обхода для не зарегистрированных пользователей. Вы можете переопределить результат этой функции, зайдя глубже, а затем заботясь о ролях. Но это слишком много накладных расходов и может способствовать открытой безопасности.

Если вы посмотрите немного дальше http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/query.php#L2632 в строке 2632, вы обнаружите, что сообщение действительно выведено из базы данных и может быть дополнительно отфильтрован с помощью posts_results который приходит на пару строк ниже.

Сохраните значение сообщения и введите его до конца после всех проверок, которые аннулируют массив posts . http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/query.php#L2740, где the_posts нетерпением ждет крюк the_posts .

Итак, что-то грубое выглядело бы так:

 add_filter( 'posts_results', 'wpse46014_peek_into_private', null, 2 ); function wpse46014_peek_into_private( $posts, &$query ) { if ( sizeof( $posts ) != 1 ) return $posts; /* not interested */ $status = get_post_status( $posts[0] ); $post_status_obj = get_post_status_object( $status ); if ( $post_status_obj->public ) return $posts; /* it's public */ if ( !isset( $_GET['key'] ) || $_GET['key'] != 'foryoureyesonly' ) return $posts; /* not for your eyes */ $query->_my_private_stash = $posts; /* stash away */ add_filter( 'the_posts', 'wpse46014_inject_private', null, 2 ); } function wpse46014_inject_private( $posts, &$query ) { /* do only once */ remove_filter( 'the_posts', 'wpse46014_inject_private', null, 2 ); return $query->_my_private_stash; } 

Добавить ссылку предварительного просмотра сообщения с секретным ключом ?p=4601&key=foryoureyesonly и сообщение отображается для всех. В коде есть грязные ходы, например, в stash, вместо этого вы можете использовать globals (не рекомендуется) или обернуть его в объект (да!), А затем расширить функциональность с помощью пользовательских паролей для каждого сообщения и т. Д.

Запланированные превью

Запланированные превью работают очень схожим образом. Сообщения posts_results заполняются 'future' постов статуса абсолютно таким же образом, и одни и те же крючки можно использовать. Код будет работать без изменений для запланированных сообщений.

/2012/07/12/one-two-three/404 NOT FOUND

/2012/07/12/one-two-three/?key=foryoureyesonly200 OK

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

Публичный просмотр сообщений