Vous n'êtes pas identifié.
Annonce
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite Recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
#1 16-08-2008 23:24:03
Probleme redirection
Ma configuration WP actuelle
- Version de WordPress : 2.6.1
- Thème utilisé : par defaut
- Plugins en place : test
- Nom de l'hebergeur : free et 1&1
- Adresse du site :
Problème(s) rencontré(s) :
Tout fonctionne, sauf quand j'utilise la fonction header dans un plugin. Les nombreuses entrées dans ce forum (espaces, utf-8, wp-config, ...) ne m'ont pas apporté la solution.
Voici ce que j'ai écris juste pour tester (quand il y a le tag [test_redirection] sur une page, je suis transféré sur la page d'accueil). A noter qu'en local avec wamp, je n'ai pas ce problème mais que chez free et chez 1&1 je l'ai.
<?php
/*
Plugin Name: Test redirection
*/
add_filter('the_content', 'test_redirection');
function test_redirection($content)
{
if ( stristr( $content, '[test_redirection]' )) header("Location: ".wp_sanitize_redirect(get_option('home')));
}
?>
Et le message d'erreur qui arrive lorsque je vais sur une page qui déclenche la redirection :
Warning: Cannot modify header information - headers already sent by (output started at ...site/wp-content/themes/default/header.php:2) in ...site/wp-content/plugins/test_redirection.php on line 9
Je craque, quelqu'un aurait-il une idée ?
Hors ligne
#2 05-09-2008 14:28:10
Re: Probleme redirection
Bon on peut considérer comme résolu. Pour ceux que cela interresse, voici l'explication :
La redirection se trouve dans le hook "the_content" qui se trouve après la balise </head> il ne peut donc pas fonctionner. Il faut introduire la rédirection avant que cette balise ne soit passée.
J'ai changé la logique du plugin pour la placer avant et hop, ça marche. Par contre, cela alourdit un peu car il faut que je fasse l'analyse du contenu à ce moment.
il semblerait qu'avec wamp, je reste en local, cela expliquerait que cela fonctionnait en test.
Hors ligne