2010-08-10 7 views
2

Я бегу сайт на питание от WordPress с дополнительными страницами ... Чтобы интегрировать эти страницы с темой WordPress я использую этот код:пользовательские страницы дают 404 название ошибки в 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() .. также он не работает.

Любые предложения? Спасибо

ответ

1

Может быть неуклюжим, но если вы внесете фильтр 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; 
} 
3

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

<?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(); 
?> 
0

Существует код в файле класса-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, когда запрашивается ваша страница.

Смежные вопросы