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”).

Read More

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

Related posts

Leave a Reply

3 comments

  1. 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();
    ?>
    
  2. 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;
    }
    
  3. 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