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: 19 años, 8 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 ( 
0 == $encode_html ) {
        
$content = make_url_footnote($content);
    } elseif ( 
2 == $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 ( 
0 == $encode_html ) {
        
$content = make_url_footnote($content);
    } elseif ( 
2 == $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