web-dev-qa-db-fra.com

Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par ... WordPress Issue

Je rencontre cette erreur. et je n'ai aucune idée de traiter cela.

Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par (sortie démarrée à /home/ben213/public_html/wp-content/themes/Bendaggers/functions.php:9) dans /home/ben213/public_html/wp-includes/pluggable.php sur ligne 934

ma ligne de fichier Functions.php # 9 est:

<?php if(function_exists('register_sidebar'))register_sidebar();?>

alors que mon pluggable.php # 934 est

function wp_redirect($location, $status = 302) {
    global $is_IIS;

    $location = apply_filters('wp_redirect', $location, $status);
    $status = apply_filters('wp_redirect_status', $status, $location);

    if ( !$location ) // allows the wp_redirect filter to cancel a redirect
        return false;

    $location = wp_sanitize_redirect($location);

    if ( !$is_IIS && php_sapi_name() != 'cgi-fcgi' )
        status_header($status); // This causes problems on IIS and some FastCGI setups

    header("Location: $location", true, $status);}
endif;

J'ai du mal à comprendre cela car je ne suis pas programmeur. qu'est-ce qui semble mal? veuillez m'aider s'il vous plaît ...

40
Ben Daggers

Votre thème imprime la sortie (texte) vers le navigateur, mais pour une raison quelconque WordPress redirige l'utilisateur (avec wp_redirect) de cette page avant le rendu de la page entière. Vous ne pouvez pas commencez à imprimer la sortie, puis redirigez, ou vous obtiendrez l'erreur que vous voyez. C'est ce que Paul Grime voulait dire dans son commentaire.

Ken White a commenté en faisant référence à un message avec un problème similaire. J'ai corrigé cela dans ma propre expérience en mettant en mémoire tampon la sortie du script.

Dans le fichier functions.php De votre thème (qui est inclus chaque fois que les pages de votre thème se chargent), mettez ce qui suit:

//allow redirection, even if my theme starts to send output to the browser
add_action('init', 'do_output_buffer');
function do_output_buffer() {
        ob_start();
}

Maintenant, même si une partie de votre thème commence à envoyer des entrées au navigateur, PHP n'enverra pas ce texte jusqu'à ce que la page soit complètement chargée, ce qui permet WordPress = rediriger les utilisateurs, si nécessaire, dans le cadre de sa propre logique.

81
hardy101

Si vous essayez de rediriger vers une autre page de votre page actuelle, où vous avez imposé une condition ou sans condition, utilisez ce code. E.gs vous avez deux pages A.php, & B.php et actuellement vous êtes dans A.php où vous voulez aller sur une autre page B.php en cliquant sur le BOUTON.

   if(isset($_POST['save_btn']))
    {
        //write some of your code here, if necessary
        echo'<script> window.location="B.php"; </script> ';
     }
19
Pir Fahim Shah