Шаблон перенаправления шаблона загружен, но заголовок 404


Я создал шаблон перенаправления для данного URL-адреса, например.: test.com/test

Тестовая страница не существует, я просто проверяю URL-адрес из query_vars, если он совпадает, я загружаю шаблон с помощью

include(file.php);
exit;

Страница загружается и показывает то, что я ожидаю, но заголовок страницы не найден. Я решаю эту проблему с помощью фильтра, но я увидел, что вся страница имеет статус 404. Кстати, я видел, что встроенное многосайтовое сообщение об активации также имеет заголовок 404. (Я работаю на локальном хосте.)

Как я могу решить эту проблему, не создавая саму страницу в wp?

Author: Iamzozo, 2013-06-14

1 answers

По сути, вы пытаетесь создать "поддельную" страницу без необходимости создавать физическую страницу в базе данных WordPress, и для этого вам понадобятся пользовательские правила перезаписи.

Для получения более подробной информации смотрите Мой ответ здесь: Настройка пользовательского вложенного пути для блога без использования страниц?

Краткий обзор:

Шаг 1: настройте свои собственные правила перезаписи

add_action('init', 'fake_page_rewrite');

function fake_page_rewrite(){

    global $wp_rewrite;
    //set up our query variable %test% which equates to index.php?test= 
    add_rewrite_tag( '%test%', '([^&]+)'); 
    //add rewrite rule that matches /test
    add_rewrite_rule('^test/?','index.php?test=test','top');
    //add endpoint, in this case 'test' to satisfy our rewrite rule /test
    add_rewrite_endpoint( 'test', EP_PERMALINK | EP_PAGES );
    //flush rules to get this to work properly (do this once, then comment out)
    $wp_rewrite->flush_rules();

}

Шаг 2: правильно включите файл шаблона для сопоставления переменной запроса,

add_action('template_redirect', 'fake_page_redirect');

function fake_page_redirect(){

    global $wp;

    //retrieve the query vars and store as variable $template 
    $template = $wp->query_vars;

    //pass the $template variable into the conditional statement and
    //check if the key 'test' is one of the query_vars held in the $template array
    //and that 'test' is equal to the value of the key which is set
    if ( array_key_exists( 'test', $template ) && 'test' == $template['test'] ) {

        //if the key 'test' exists and 'test' matches the value of that key
        //then return the template specified below to handle presentation
        include( get_template_directory().'/your-template-name-here.php' );
        exit;
    }
}
 1
Author: Adam, 2017-04-13 12:37:50