[Résolu] Warning headers already sent sur wp_redirect après is_user_logged_in() (Créer un compte)

  • Statut : non résolu
8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Messages
  • #545612
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 4.1
    – Version de PHP/MySQL : ?hébergement OVH
    – Thème utilisé : twentyfourteen-child
    – Extensions en place : Akismet, Comment-popularity, contact-form7, Post viewed recently, Relevanssi, Subscribe to comment reloaded, Super socializer, theme-my-login, User submitted posts, Wp-greet.
    – Nom de l’hebergeur : OVH
    – Adresse du site : http:tst.allwewish.org

    Problème(s) rencontré(s) :
    J’essaie de limiter l’accès à une page aux personnes connectées au site. Pour ce faire j’utilise le code suivant:

    <?php
    /*
    * Template name: Section sécurisée
    */
    get_header(); ?>

    <div id="main-content" class="main-content">
    <div id="primary" class="content-area">
    <div id="contentsl" class="site-contentsl" role="main">

    <?php
    if( is_user_logged_in() ) {
    if ( have_posts() ) while ( have_posts() ) : the_post();

    echo '<h1>‘ . get_the_title() . ‘</h1>‘;
    the_content();

    endwhile;
    }else{
    wp_redirect( ‘http://tst.allwewish.org/?page_id=21653’ ); exit;}
    ?>

    </div><!-- #content -->
    </div><!-- #primary -->
    <?php get_sidebar(); ?>
    </div><!-- #main-content -->

    <?php get_footer();?>

    Ca fonctionne bien quand l’utilisateur est connecté mais quand il ne l’est pas il reçoit le message d’erreur suivant:

    Warning: Cannot modify header information – headers already sent by (output started at /home/allwewis/tst/wp-includes/class.wp-scripts.php:159) in /home/allwewis/tst/wp-includes/pluggable.php on line 1178

    Quelqu’un aurait-il une solution au problème ou un moyen de le contourner? (par exemple en incluant le formulaire de connexion/inscription à la place de la redirection?)

    J’ai cherché cherché mais comme l’erreur renvoie à pluggable.php les réponses trouvées partent dans tous les sens alors que mon problème semble précis…

    Je croise les doigts et vous remercie d’avance pour votre aide!!!
    A vous lire,

    Tche

    #988327
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    PS: Le problème persiste quand je désactive theme-my-login et/ou Super socializer

    #988328
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    up
    une 🍺 ou un thé à la menthe pour qui peut m’aider

    #988329
    Franck (fge)
    Modérateur
    Maître WordPress
    9572 contributions

    Cette erreur fait l’objet d’un fil de discussion épinglé en tête du forum. Un des fichiers utilisé n’est pas au bon format ou possède un espace qui perturbe le fonctionnement de PHP. Il faut faire une recherche sur les fichiers ayant été modifié manuellement. Il faut donc commencer par le fichier que tu as modifié pour insérer le code. Test en remettant le fichier original (celui du thème ou de WordPress avant toute édition).

    #988330
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Merci pour ta réponse FGE, j’ai trouvé le fil de discussion et je le parcours.

    Cela dit, le template repris ci-dessous n’est pas natif de wordpress je l’ai créé moi-même (enfin en me basant sur un tuto ou une discussion de forum).

    Je n’ai pas modifié pluggable.php ni wp-config.php

    Je n’ai ce soucis qu’avec ce template. (je pense donc que header.php, footer.php et sidebar.php sont bons)

    Je vais vérifier functions.php mais vois-tu un autre fichier qui pourrait causer le problème?

    Merci déjà et encore.

    #988331
    didier07
    Participant
    Maître WordPress
    1964 contributions

    wp_redirect doit etre utilisé ABSOLUMENT AVANT tout code html
    Déplace ton test avant le get_header (en l’adaptant bien sur) et tout ira comme sur des roulettes

    #988332
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    J’ai lu toute la discussion… (Warning headers…)

    J’ai vérifié le codage de wp-config.php, pluggable.php, template-prive.php, functions.php et class.wp-scripts.php et mis wp-config en UTF8 sans DOM, les autres l’étaient déjà.

    J’ai effacé le <?php du début de ces fichiers pour le réécrire.

    J’ai enlevé les lignes vides à la fin de ces fichiers quand il y en avait.
    Mais rien n’y fait,

    Le message d’erreur est devenu :

    Warning: Cannot modify header information – headers already sent by (output started at /home/allwewis/tst/wp-includes/class.wp-scripts.php:160) in /home/allwewis/tst/wp-includes/pluggable.php on line 1178

    class.wp-scripts.php:160 au lieu de 159 car j’ai passé une ligne après la balise <?php du début comme recommandé dans la discussion mais rien n'y fait…

    Quelqu’un aurait-il une autre proposition?

    #988333
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Un énorme merci Didier!!! Je n’avais pas lu ta réponse…
    Pour simplifier, j’ai remplacé la redirection par un texte et un lien vers le formulaire de connexion.
    Bonne soirée!!!

    Et la bière je l’envoie où? 🙂

8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.