2013-07-31 2 views
0

Я создаю плагин, которому нужна виртуальная страница, чтобы динамически создавать страницу «Просмотр заказа» (заказы - это настраиваемый тип почтового ящика, который я создал). Я был в состоянии создать виртуальную страницу, используя следующий код:Виртуальная страница внутри шаблона темы

// 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

попробуйте следующее:

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

вам нужно будет добавить это в верхней части страницы.

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; 
    } 
} 
Смежные вопросы