Шаблон одиночного сообщения в полноэкранном режиме, не наследующий разрешение роли

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

Я сделал функциональный нестандартный шаблон php для этой цели под названием prompter.php, и я положил его в корень моего сайта.

В каждом отдельном сообщении есть кнопка, называемая «представлением суфлера», которая вызовет представление текущего сообщения в режиме «суфлера» (полноэкранный режим)

Все работает нормально, пока я не применил разрешение на основе роли на моем посту.

Оказывается, мой полноэкранный режим не защищен разрешением роли, установленным wordpress.

Мой вопрос в том, как я могу настроить свой собственный шаблон сообщения наследовать разрешение, установленное в обычном шаблоне почты?

Вот пример того, что я пытаюсь сказать.

Отдельный пост с использованием обычного шаблона (незащищенный)

AUBREY

Одиночная запись с использованием полноэкранного режима (незащищенная)

http://prompter.rareapps.org/prompter.php?p=123

Отдельное сообщение с использованием обычного шаблона (защищено)

http://prompter.rareapps.org/?p=2193

Одиночная запись с использованием полноэкранного режима (все еще незащищенная)

http://prompter.rareapps.org/prompter.php?p=2193

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

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

благодаря

Следующий минус wordpress, не проходя через index.php:

http://prompter.rareapps.org/prompter.php?p=2193 

Я бы рекомендовал, чтобы вместо этого вы разместили prompter.php в своем каталоге тем, а затем захватили страницу для отображения, когда кто-то нажимает ссылку для просмотра полного экрана с помощью фильтра template_redirect:

 function my_special_display_view( $template ) { if ( is_page() && isset($_REQUEST['special_view']) ) { global $post; $post_id = $post->ID; $new_template = locate_template( array('prompter.php') ); if ( !empty( $new_template ) ) { $template = $new_template; } } return $template; } add_filter( 'template_include', 'my_special_display_view', 99 ); 

Это предполагает пару вещей:

  1. Ваши ссылки на ваш особый вид выглядят так : http: //…/? P = 2193 & special_view = 1
  2. В файле prompter.php используется внутренняя часть wordpress для выполнения действий
  3. prompter.php находится в корневом каталоге темы

Возможно, вам нужно будет обмануть свою обычную таблицу стилей и поставить в очередь другую в том же месте, где вы делаете $template = $new_template;

 add_action('wp_enqueue_scripts', 'do_change_styles_significantly', 11); 

и функция, чтобы пойти с ним:

 function do_change_styles_significantly() { wp_dequeue_style( HOOK_FOR_YOUR_THEMES_STYLESHEET ); wp_register_style( 'special_shiny', full_url_to_alternate_styles, array(), '1.0.0', 'all'); } 

Немного сложнее, но это будет сделано в WordPress и даст вам то, что вы ищете.