开发者

custom pages give 404 error title in Wordpress

I'm running a site powered by WordPress with extra pages... To integrate these pages with the WordPress theme I use this code:

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

This works fine, however page title shows always 404开发者_开发百科 Error Page (not "Title").

It seems that $wp-query->is_404 is always set to true. I tried overriding this value but it doesn't seem to work. I tried fixing it by putting header status 200 above function get_header()..also it doesn't work.

Any suggestions? Thanks


I know it has been a long time since you asked but I had the problem and here is the solution.

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


Maybe clumsy, but if you implement the wp_title filter, you can change the title to what you want. You can add this code to the header of each custom page:

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

If you want it a bit cleaner, use a smarter version of this filter to a plugin, and set only the global variable (here $override_title) in your page:

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;
}


There is code in the file 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;
    }
...
}

that handles 404 status for various of pages.

The stack of functions of this code is:

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()

So you have two ways to handle the situation:

1)

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

2) more correct would be insert your own function here

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

that returns true when your custom page is requested

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜