Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/11/2009, 06:13
Avatar de AnisDelMono
AnisDelMono
 
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Añadir imagenes al rss

Hola de nuevo

He encontrado la solucion. He consultado y rebuscado informacion y es increible la de gente que me he encontrado con el mismo problema en otros foros, pero sin solucion

La que he hecho no es muy elegante, pues implica tocar codigo "wordpress". Tal vez seria cuestion de hacer un plugin, pero aun no se como hacerlos. Por si a alguien le sirve, la posteo

En el icono rss de mi blog hay una llamada al archivo feed-rss.php (en wp-includes) donde hay esta funcion:

Código PHP:
the_content_rss(''0''get_option('rss_excerpt_length')) 
Que esta alojada en el archivo feed.php. Por alguna extranya razon, se obvia el ultimo parametro. Pego la funcion original:

Código PHP:
function the_content_rss($more_link_text='(more...)'$stripteaser=0$more_file=''$cut 0$encode_html 0) {
    
$content get_the_content($more_link_text$stripteaser$more_file);
    
$content apply_filters('the_content_rss'$content);
    if ( 
$cut && !$encode_html )
        
$encode_html 2;
    if ( 
1== $encode_html ) {
        
$content esc_html($content);
        
$cut 0;
    } elseif ( 
== $encode_html ) {
        
$content make_url_footnote($content);
    } elseif ( 
== $encode_html ) {
        
$content strip_tags($content);
    }
    if ( 
$cut ) {
        
$blah explode(' '$content);
        if ( 
count($blah) > $cut ) {
            
$k $cut;
            
$use_dotdotdot 1;
        } else {
            
$k count($blah);
            
$use_dotdotdot 0;
        }

        
/** @todo Check performance, might be faster to use array slice instead. */
        
for ( $i=0$i<$k$i++ )
            
$excerpt .= $blah[$i].' ';
        
$excerpt .= ($use_dotdotdot) ? '...' '';
        
$content $excerpt;
    }
    
$content str_replace(']]>'']]&gt;'$content);
    echo 
$content;

Si pusieramos en la llamada a la funcion un 1 como ultimo parametro, mostraria las imagenes. Pero al no existir ese parametro, le da valor 2 y le hace un strip_tags($content);. Y es por eso que las etiquetas se van al carajo.

Para hacer lo que yo queria inicialmente, que es poner la primera imagen (y solo la primera) y luego el contenido resumido he alterado esta funcion dejandola asi:

Código PHP:
function the_content_rss($more_link_text='(more...)'$stripteaser=0$more_file=''$cut 0$encode_html 0) {
    
$content get_the_content($more_link_text$stripteaser$more_file);
    
    
// hago un split para separar la primera imagen del resto
    
$primeraImg split("/>"$content);
    
//guardo el primer valor de la matriz en una variable, cerrando la etiqueta y anyadiendo 2 saltos
    
$imatge $primeraImg[0]."/><br /><br />";
    
// aplico filtros
    
$imatge esc_html($imatge);
    
    
$content apply_filters('the_content_rss'$content);

    if ( 
$cut && !$encode_html )
        
$encode_html 2;
    if ( 
1== $encode_html ) {
        
$content esc_html($content);
        
$cut 0;
    } elseif ( 
== $encode_html ) {
        
$content make_url_footnote($content);
    } elseif ( 
== $encode_html ) {
        
$content strip_tags($content);
    }
    if ( 
$cut ) {
        
$blah explode(' '$content);
        if ( 
count($blah) > $cut ) {
            
$k $cut;
            
$use_dotdotdot 1;
        } else {
            
$k count($blah);
            
$use_dotdotdot 0;
        }

        
/** @todo Check performance, might be faster to use array slice instead. */
        
for ( $i=0$i<$k$i++ )
            
$excerpt .= $blah[$i].' ';
        
$excerpt .= ($use_dotdotdot) ? '...' '';
        
$content $excerpt;
    }
    
$content str_replace(']]>'']]&gt;'$content);
    
    
// y lo echo junto al content libre de tags
    
echo $imatge.$content;

Hay comentarios en castellano, espero se entiendan.

A mi me funciona, pero si alguien conoce una solucion mas elegante, no se corten y posteenla.
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian