我正在创建一个需要虚拟页面的插件,以便动态创建一个" Review Order"页面(订单是我创建的自定义帖子类型)。我能够使用以下代码创建虚拟页面:
// Set up the rewrite rules for the order page
add_action( 'init', 'action_init_redirect' );
function action_init_redirect() {
add_rewrite_rule( 'orders/?', 'index.php?orders=new', 'top' );
}
add_filter( 'query_vars', 'filter_query_vars' );
function filter_query_vars( $query_vars ) {
$query_vars[] = 'orders';
return $query_vars;
}
add_action( 'parse_request', 'action_parse_request');
function action_parse_request( &$wp ) {
if ( array_key_exists( 'orders', $wp->query_vars ) ) {
//Beginning of page code
echo "hello";
exit;
}
}
问题是,这会创建一个包含空白模板的页面,也就是说,上面的代码会创建一个包含文本hello
的空白页面。我希望虚拟页面在网站的主题内,并像WordPress框架中的常规页面一样显示。如何做到这一点?
答案 0 :(得分:1)
解决方案是在parse_request
:
function action_parse_request( $wp ) {
if ( array_key_exists( 'virtual', $wp->query_vars ) ) {
get_header(); ?>
<div id="primary">
<div id="content" role="main">
Hello, world!
</div>
</div>
<?php get_footer();
exit;
}
}
答案 1 :(得分:0)
尝试使用以下内容:
define('WP_USE_THEMES', true);
require('/ABSOLUTE_PATH_HERE/wp-blog-header.php');
require('/ABSOLUTE_PATH_HERE/wp-load.php');
您需要将其添加到页面顶部。