2010-08-10 24 views
2

Je suis en cours d'exécution d'un site propulsé par WordPress avec des pages supplémentaires ... Pour intégrer ces pages avec le thème WordPress J'utilise ce code:pages personnalisées donnent 404 titre d'erreur dans 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(); 
?> 

Cela fonctionne bien , cependant le titre de page montre toujours la page d'erreur 404 (pas "Titre").

Il semble que $ wp-query-> is_404 soit toujours défini sur true. J'ai essayé de passer outre cette valeur mais cela ne semble pas fonctionner. J'ai essayé de le réparer en mettant l'état d'en-tête 200 au-dessus de la fonction get_header() .. aussi cela ne fonctionne pas.

Des suggestions? Merci

Répondre

1

Peut-être maladroit, mais si vous implémentez le filtre wp_title, vous pouvez changer le titre à ce que vous voulez. Vous pouvez ajouter ce code à l'en-tête de chaque page personnalisée:

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

Si vous voulez un peu plus propre, utilisez une version plus intelligente de ce filtre à un plug-in, et mettre uniquement la variable globale (ici $override_title) en votre 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

Je sais que cela fait longtemps que vous avez demandé mais j'ai eu le problème et voici la 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(); 
?> 
0

Il y a un code dans le fichier de classe 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; 
    } 
... 
} 

qui gère le statut 404 pour différentes pages.

La pile de fonctions de ce code est:

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

Alors vous avez deux façons de gérer la situation:

1)

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

2) plus correcte serait insérer votre propre fonction ici

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

qui renvoie true lorsque votre page personnalisée est demandée