你以错误的方式解决这个问题。您可以创建一个函数,该函数可以创建可以在 wordpress 页面上创建的任何内容。
但如果你真的需要,你可以在数据库之外创建一个页面,等等:
add_action('init', 'add_rewrite_rule');
function add_rewrite_rule(){
// add_rewrite_rule(REGEX url, location, priority (i.e. top is before other rewrite rules)
// I created a custom post type for this plugin called market -- replace post_type with whatever you want
//basically tell wordress to add a query var if sidebar is added to url.
add_rewrite_rule('^sidebar?','index.php?is_sidebar_page=1&post_type=market','top');
}
// register a query var
add_action('query_vars','market_set_query_var');
function market_set_query_var($vars) {
array_push($vars, 'is_sidebar_page');
return $vars;
}
// associate a template with your quer_var
add_filter('template_include', 'market_include_template', 1000, 1);
function market_include_template($template){
if(get_query_var('is_sidebar_page')){
$new_template = (theme or plugin path).'/pages/yourpage.php'; // change this path to your file
if(file_exists($new_template))
$template = $new_template;
}
return $template;
}
这不会是管理部分或与页面相关的任何查询中的页面,但当然有人可以导航到此页面。但正如我上面所说,你最好创建一个函数来创建你的侧边栏。如果您想要一个单独的文件来处理“视图”,请使用 require_once 'filename';一个文件并保持您的功能区域没有 html。
如果您在 wordpress 插件中创建函数,请不要忘记许多函数可能在加载过程的后期才可用。如果遇到任何未定义的函数,请使用 add_action()
编辑:
您在访问模板之前加载 wordpress,因此您拥有所有功能。 (谷歌 wp 加载更多信息)+ get_header() / get_footer() 还将加载一些东西,如 css 等。我在上面的代码中有一个小错字,已修复,但基本上你正在做的是告诉 wordpress 如果有人登陆 www.example.com/sidebar 以应用 query_var(重写规则)。 Wordpress 将查找其保存的变量(最终函数)并返回模板关联。第二个函数只是注册 var。
您创建的任何文件中也有 wp_functions 并包含在插件等中,因此您可以创建一个与此页面完全相同的文件。