Quel est le nouveau nom de la variable ?. utilisez-vous un cadre JS comme jQuery ou MooTools
Presque le même problème ici, mais je suppose que cela est dû à la valeur de la variable non le nom Laissez-moi vous expliquer: J'utilise un fichier modèle personnalisé pour Ajax inclusion (et chargement wp-blog-header.php) comme bloader.php fait
Javascript détecte les liens internes (Ceci assure la compatibilité lorsque JS est désactivé) et convertir les URL afin de les faire pointer vers le php de chargement, comme ceci:
var BlogURL = "http://www.domain.com";
var TemplateURL = "http://www.domain.com/wp/wp-content/themes/mytheme";
if(PassedUrl.indexOf("?page_id=") != -1) {
AjaxUrl = PassedUrl.replace(BlogURL + "/?page_id=",TemplateURL + "/pagecontent.php?pageid=");
}
else {
AjaxUrl = PassedUrl.replace(BlogURL + "/",TemplateURL + "/pagecontent.php?pagename=");
}
Ensuite pagecontent.php traite la variable chaîne de requête d'URL pour attraper le contenu à inclure:
<?PHP define('WP_USE_THEMES', false);
$wp_blogheader = ("../../../wp-blog-header.php");
require_once($wp_blogheader);
if(isset($_GET['pageid'])) {
$pag = $_GET['pageid'];
}
elseif(isset($_GET['pagename'])) {
$pag = $_GET['pagename'];
}
global $post;
// TRANSLATION FUNCTIONS OMITTED
if(isset($_GET['p'])) {
$page_data = get_post($pag);
}
if(isset($_GET['pageid'])) {
$page_data = get_page($pag);
}
elseif(isset($_GET['pagename'])) {
if(function_exists('qTranslateSlug_get_page_by_path')) {
$pag = qTranslateSlug_get_page_by_path($pag, $q_config['language']);
$page_data = get_page($pag);}
else { $page_data = get_page_by_path($pag);}
}
$content = $page_data->post_content; // Get Content
$title = $page_data->post_title; // Get title
echo do_shortcode($content);
?>
Depuis que je suis en utilisant le plugin qTranslate pour avoir un contenu plusieurs langues disponibles sur une page, certaines fonctionnalités doit être vérifié. C'est là que je reçois des erreurs 404. Fondamentalement, les fonctions de traduction dépouillent le code de langue de la variable de nom de page, transmise dans la chaîne d'URL, pour obtenir la page par défaut (la seule qui existe réellement). Ce code de langue est donc stocké et appliqué en php, pour filtrer le contenu par la langue appropriée (puisque dans pagecontent.php il commence par défaut).
Ainsi, lorsque l'URL de l'appel Ajax est www.domain.com/wp/wp-content/themes/mytheme/pagecontent.php?pagename= my_page/my_subpage il fonctionne
mais quand c'est www.domain.com/wp/wp-content/themes/mytheme/pagecontent.php?pagename= fr/mon_page/mon_subpage il jette une erreur 404 et rien ne s'affiche.
Après quelques tests de débogage, la seule différence était la valeur de variable dans l'URL, l'entrée $pag = $_GET['pagename'];
à la fonction de traduction. En fait, la sortie (avant la requête DB) est la même, corrigez-la comme elle devrait l'être en fonction de l'objectif de la fonction.
La chose la plus étrange est que la console Firebug montre le 404 (comme le journal d'accès au serveur) mais le contenu brut de la réponse et les onglets HTML affichent la bonne page! En outre, lors de l'ouverture www.domain.com/wp/wp-content/themes/mytheme/pagecontent.php?pagename= fr/my_page/my_subpage dans une autre fenêtre, il affiche (statut html 200, pas 404). Évidemment, changer la variable "nom_page" en "nom_page" n'a aucun effet. Tout fonctionnait bien avant de passer à WP 3.0.1, ce qui m'amène à penser que mon Javascript et mon php d'inclusion/traduction sont toujours corrects, où quelque chose dans la nouvelle version de WP pourrait pré-analyser la requête personnalisée chaîne et le bloquer en fonction de ses critères de page par défaut.
Cependant, je n'arrive toujours pas à comprendre comment et dans quel cas un problème php/faute d'orthographe pourrait entraîner un 404 de XMLHttpRequest.
Vous avez oublié le lien vers votre JS ... il serait préférable de simplement le coller dans votre message. Rappelez-vous de ne coller que la partie importante et de supprimer les éléments sans rapport. –
quel lien utilisez-vous? vous faites probablement quelque chose de mal à coller l'obtenir dans l'url. –
J'ai posté le javascript, qui est accessible ici http://www.tlcnz.com/scripts.js. Je sais ce qu'est une erreur 404, les fichiers sont tous là. Si vous copiez l'emplacement du lien à partir de la section contactez-nous et collez-le dans votre navigateur, vous verrez que cela fonctionne très bien, et si je désactive la chaîne de requête, cela fonctionne très bien. – urbanvintner