Панель инструментов, скрытая на виртуальной странице

Я пытаюсь создать виртуальную страницу, но панель администратора не появляется.

Вот как я создаю виртуальную страницу:

functions.php

add_action('init', function() { add_rewrite_rule('register$', 'index.php?virtualpage=1', 'top'); }); add_filter('query_vars', function($query_vars) { $query_vars[] = 'virtualpage'; return $query_vars; }); add_action( 'parse_request', function(&$wp) { if (array_key_exists('virtualpage', $wp->query_vars)) { switch ($wp->query_vars['virtualpage']) { case '1': include 'page-register.php'; } exit(); } return; }); 

страниц register.php

 <?php add_filter('wp_title', function($title, $sep, $seplocation) { return 'Register'; }, 10, 2); get_header(); get_template_part('includes/breadcrumbs'); get_template_part('includes/top_info'); ?> <div id="content" class="clearfix fullwidth"> <div id="left-area"> <?php $form = new Zebra_Form('form'); $form->add('label', 'label_email', 'email', 'Email'); $form->add('text', 'email', '', array('autocomplete' => 'off')); $form->add('submit', 'btnsubmit', 'Submit'); $form->render(); ?> </div> </div> <!-- end #content --> <?php get_footer(); 

Что я делаю не так?

Решение

Основываясь на ответе, я привязал функцию к действию «template_redirect» вместо действия «parse_request» следующим образом:

 add_action('template_redirect', function() { global $wp; if (array_key_exists('virtualpage', $wp->query_vars)) { switch ($wp->query_vars['virtualpage']) { case '1': include 'page-register.php'; } exit(); } return; }); 

Solutions Collecting From Web of "Панель инструментов, скрытая на виртуальной странице"

Панель администратора инициализируется на template_redirect . Это должно быть короткое замыкание.

Быстрый и грязный метод – запустить _wp_admin_bar_init(); в верхней части страницы.

 add_filter('wp_title', function($title, $sep, $seplocation) { return 'Register'; }, 10, 2); _wp_admin_bar_init(); // <- this <- get_header(); get_template_part('includes/breadcrumbs'); get_template_part('includes/top_info'); 

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

 add_action( 'template_redirect', function() { global $wp_query; if (array_key_exists('virtualpage', $wp_query->query_vars)) { switch ($wp_query->query_vars['virtualpage']) { case '1' : include 'page-register.php'; break; } exit(); } return; });