【问题标题】:Virtual Page Within Theme Template主题模板中的虚拟页面
【发布时间】:2013-07-31 18:58:57
【问题描述】:

我正在创建一个需要虚拟页面的插件,以便动态创建“评论订单”页面(订单是我创建的自定义帖子类型)。我能够使用以下代码创建一个虚拟页面:

// 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 框架中的常规页面一样显示。如何做到这一点?

【问题讨论】:

    标签: wordpress templates themes virtual


    【解决方案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;
        }
    }
    

    【讨论】:

      【解决方案2】:

      尝试使用以下内容:

      define('WP_USE_THEMES', true);
      require('/ABSOLUTE_PATH_HERE/wp-blog-header.php');
      require('/ABSOLUTE_PATH_HERE/wp-load.php');   
      

      您需要将此添加到页面顶部。

      【讨论】:

        猜你喜欢
        • 2013-07-31
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        相关资源
        最近更新 更多