пользовательские страницы дают 404 заголовок ошибки в Wordpress - PullRequest
2 голосов
/ 10 августа 2010

У меня работает сайт на платформе WordPress с дополнительными страницами ... Для интеграции этих страниц с темой WordPress я использую следующий код:

<?php
$blog_longd='Title'; // page title
define('WP_USE_THEMES', false);
require('wp-blog-header.php');
get_header();
?>

html code

<?php
get_sidebar();
get_footer();
?>

Это отлично работает, однако заголовок страницы всегда показывает 404Страница ошибки (не «Заголовок»).

Кажется, что $ wp-query-> is_404 всегда имеет значение true.Я попытался переопределить это значение, но, похоже, оно не работает.Я попытался исправить это, поместив статус заголовка 200 выше функции get_header () .. также она не работает.

Есть предложения?Спасибо

Ответы [ 3 ]

3 голосов
/ 20 июня 2012

Я знаю, что прошло много времени с тех пор, как вы спросили, но у меня была проблема, и вот решение.

<?php
require('./wp-config.php');

$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();

get_header();

echo "HELLO WORLD";

get_footer();
?>
1 голос
/ 11 августа 2010

Возможно, неуклюжий, но если вы реализуете фильтр wp_title, вы можете изменить заголовок на тот, который вы хотите.Вы можете добавить этот код в заголовок каждой пользовательской страницы:

add_filter('wp_title', 'replace_title');
function replace_title() {
   return 'My new title';
}

Если вы хотите, чтобы он немного чище, используйте более умную версию этого фильтра для плагина и установите только глобальную переменную (здесь $override_title) на вашей странице:

add_filter('wp_title', 'replace_title_if_global');
function replace_title_if_global($title) {
   global $override_title;
   if ($override_title) {
      return $override_title;
   }
   return $title;
}
0 голосов
/ 11 июня 2013

В файле class-wp.php есть код:

function handle_404() {
...
    // Don't 404 for these queries if they matched an object.
    if ( ( is_tag() || is_category() || is_tax() || is_author() || is_post_type_archive() ) && $wp_query->get_queried_object() ) {
        status_header( 200 );
        return;
    }
...
}

, который обрабатывает статус 404 для различных страниц.

Стек функций этого кода:

1) wp-blog-header.php:14, require()
2) function.php:775, wp()
3) class-wp.php:525, WP->main()
4) class-wp.php:491, handle_404()

Итак, у вас есть два способа справиться с ситуацией:

1)

require('wp-blog-header.php');
function status_header( 200 ); 

2) правильнее было бы вставить сюда свою функцию

if ( your_own_function() || ((is_tag() || is_category() || is_tax() || is_author() || is_post_type_archive() ) && $wp_query->get_queried_object()) ) {

, который возвращает true при запросе пользовательской страницы

...