我正在尝试创建一个虚拟页面,但我的管理工具栏没有显示出来。
以下是我创建虚拟页面的方式:
功能。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;
});
页面寄存器。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\\u redirect”操作,而不是“parse\\u 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;
});
SO网友:s_ha_dum
管理栏是initialized on 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;
});