Soporte » Plugins y Hacks » Problema con los "headers already sent by"

  • Hola a todos,

    soy nuevo en el desarrollo de plugins de WP y tengo un problemilla con uno que estoy programando.

    El plugin (widget) tan sólo muestra los últimos artículos de una categoria seleccionada. Funciona correctamente, pero al ejecutarse en el frontend me sale este error: «Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\blog3\wp-content\plugins\custom-news.php:74) in C:\xampp\htdocs\blog3\wp-content\themes\genoa\functions.php on line 391»

    A continuación pongo el código que tengo:

    <?php
    /*
    Plugin Name: Ultimas noticias personalizadas
    Plugin URI: http://www.domain.com/
    Description: Widget para personalizacion de las ultimas noticias
    Author: Jordi
    Version: 0.5 Alpha
    Author URI: http://www.domain.com/
    */
        add_action ( 'widgets_init' , create_function ( '' , 'return register_widget("CustomSlugNews");' ) ) ; 
    
     class CustomSlugNews extends WP_Widget
     {
       function CustomSlugNews ( )
       {
         $widget_ops = array ( 'classname' => 'CustomSlugNews' , 'description' => 'Muestra las ultimas noticias por categoria seleccionada' ) ;
         $this -> WP_Widget ( 'RandomPostWidget' , 'Ultimas noticias por categoria' , $widget_ops ) ;
       }
    
       function form ( $instance )
       {
         $instance = wp_parse_args ( ( array ) $instance , array ( 'title' => '' ) ) ;
         $title = $instance [ 'title' ] ;
         $instance = wp_parse_args ( ( array ) $instance , array ( 'slug' => '' ) ) ;
         $slug = $instance [ 'slug' ] ;
         $instance = wp_parse_args ( ( array ) $instance , array ( 'numPost' => '' ) ) ;
         $numPost = $instance [ 'numPost' ] ;
     ?>
       <p>
           <label for=" <?php echo $this -> get_field_id ( 'title' ) ; ?> ">Titulo: <input class="widefat" id=" <?php echo $this -> get_field_id ( 'title' ) ; ?> " name=" <?php echo $this -> get_field_name ( 'title' ) ; ?> " type="text" value="<?php echo attribute_escape ( $title ) ; ?>" /></label>
           <label for=" <?php echo $this -> get_field_id ( 'slug' ) ; ?> ">Categoria (escribir nombre "slug"): <input class="widefat" id=" <?php echo $this -> get_field_id ( 'slug' ) ; ?> " name=" <?php echo $this -> get_field_name ( 'slug' ) ; ?> " type="text" value="<?php echo attribute_escape ( $slug ) ; ?>" /></label>
           <label for=" <?php echo $this -> get_field_id ( 'numPost' ) ; ?> ">Numero de noticias: <input class="widefat" id=" <?php echo $this -> get_field_id ( 'numPost' ) ; ?> " name=" <?php echo $this -> get_field_name ( 'numPost' ) ; ?> " type="text" value="<?php echo attribute_escape ( $numPost ) ; ?>" /></label>
       </p>
     <?php
       }
    
       function update ( $new_instance , $old_instance )
       {
         $instance = $old_instance ;
         $instance [ 'title' ] = strip_tags( stripslashes($new_instance [ 'title' ])) ;
         $instance [ 'slug' ] = strip_tags( stripslashes($new_instance [ 'slug' ])) ;
         $instance [ 'numPost' ] = strip_tags( stripslashes($new_instance [ 'numPost' ])) ;
         return $instance ;
       }
    
       function widget ( $args , $instance )
       {
         extract ( $args , EXTR_SKIP ) ;
    
         echo $before_widget ;
         $title = empty ( $instance [ 'title' ] ) ? '  ' : apply_filters ( 'widget_title' , $instance [ 'title' ] ) ;
         $slug = empty ( $instance [ 'slug' ] ) ? '  ' : apply_filters ( 'widget_title' , $instance [ 'slug' ] ) ;
         $numPost = empty ( $instance [ 'numPost' ] ) ? '  ' : apply_filters ( 'widget_title' , $instance [ 'numPost' ] ) ;
    
         /*if ( ! empty ( $title ) )
           echo $before_title . $title . $after_title ;;*/
    
         // WIDGET CODE GOES HERE
         echo '<ul>';
    
         $recent = new WP_Query("category_name=$slug&showposts=$numPost"); while($recent->have_posts()) : $recent->the_post();?>
    
             <li><a href="<?=the_permalink()?>" title="<?=the_title()?>"><?=the_title()?></a></li>
    
         <?php 
    
         endwhile;
         echo '</ul>';
         echo $after_widget ;
       }
    
     }
    // add_action ( 'widgets_init' , create_function ( '' , 'return register_widget("CustomSlugNews");' ) ) ;
     ?>

    He buscado por los foros, pero no veo el fallo en mi plugin.
    ¿Alguien me puede decir qué le pasa al código?

    Muchas gracias de antemano. Un saludo!

  • El debate ‘Problema con los "headers already sent by"’ está cerrado a nuevas respuestas.