Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Añadir imagenes al rss

Estas en el tema de Añadir imagenes al rss en el foro de WordPress en Foros del Web. Hola, que tal? Pues no se si es que he roto algo o habré tocado algo que no debia o es que esto ya es ...
  #1 (permalink)  
Antiguo 12/10/2009, 09:32
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 9 meses
Puntos: 7
Añadir imagenes al rss

Hola, que tal?

Pues no se si es que he roto algo o habré tocado algo que no debia o es que esto ya es asi de serie.

Como se añaden imagenes a la pagina del rss? He de instalar algun plugin? Es posible poner solamente la primera foto o seleccionar una foto en particular?

Si alguien me podria orientar, por favor

Gracias.
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
  #2 (permalink)  
Antiguo 14/10/2009, 19:44
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Respuesta: Añadir imagenes al rss

En general, el RSS no tiene un campo especial para colocar una imagen por item (entrada). Lo que se puede hacer --y se hace-- es colocar el HTML en el campo de la descripción (el contenido).

Wordpress debería servir el HTML tal cual de tu entrada, con todo e imagen. No se entiende si algo te dejó de funcionar o qué, por aquello de "si habrás roto algo". Quizá --se me ocurre, sin mayor información--, no estarás mostrando todo el contenido y al cortarse no incluye la imagen.

... si bien, sí es posible crear un script que se comporte de una manera particular para generar el contenido del RSS, no sé si haya un plugin que lo haga (buscador...) o quieras/puedas hacerlo.

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 15/10/2009, 03:28
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 9 meses
Puntos: 7
Respuesta: Añadir imagenes al rss

Gracias por responder, jam1138

Recuerdo que antes si me mostraba toda la informacion, pero se me habia propuesto de añadir solamente una imagen en la cabecera y, trasteando, en Opciones->lectura vi "Mostrar, para cada entrada en el feed" -> " Texto completo" o
"Sumario".

Le di a sumario y me mostraba una entrada resumida que acababa con "...".

Pero ya no he conseguido modificarlo. Si ahora le doy a "Texto completo", no me muestra toda la entrada de nuevo, solo el sumario.

Es posible que sea un bug. Trabajo con la version 2.8.4, bastante reciente. Si acaso, mirare en la pagina oficial a ver si veo algo sobre el tema. No me corre mucha prisa, pero si encuentro la solucion, la posteo

Un saludo y gracias de nuevo
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
  #4 (permalink)  
Antiguo 04/11/2009, 06:13
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 9 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
  #5 (permalink)  
Antiguo 09/11/2009, 00:43
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Añadir imagenes al rss

AnisDelMono, casualmente a esta hora estoy trabajando con eso. Copia y pega lo siguiente en el archivo functions.php de tu plantilla (por supuesto restaurando los archivos de núcleo que hayas modificado):

Código PHP:
<?php
function img_rss() {
  global 
$post;
  
$img '';
  
$images get_children(array(
    
'post_parent'    => $post->ID,
    
'post_type'      => 'attachment',
    
'numberposts'    => 1,
    
'post_mime_type'  => 'image',
    
'orderby'      => 'menu_order',
    
'order'        => 'ASC'
  
));
  if(
$images) {
    foreach( 
$images as $image ) {
      
$ruta wp_get_attachment_image_src$image->ID'thumbnail' );
      
$img .='<enclosure url="'.$ruta[0].'" type="image/jpg" />';
    }
  }
echo 
$img;
}

add_action('rss_item''img_rss');
?>
Fíjate en la última línea, la cual tiene la función 'rss_item'. Puedes reemplazarla según conveniencia (o agregar debajo) por otras como 'rss2_item', 'rdf_item', etc. Aquí tienes las disponibles:

http://codex.wordpress.org/Plugin_AP...e#Feed_Actions

El procedimiento sería así:

Código PHP:
add_action('rss_item''img_rss');
add_action('rss2_item''img_rss');
etc... 
Igualmente fíjate en la variable $ruta que tiene el valor 'thumbnail'. Puedes cambiar eso a 'medium', 'large' o 'full' a gusto.
  #6 (permalink)  
Antiguo 09/11/2009, 03:10
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 9 meses
Puntos: 7
Respuesta: Añadir imagenes al rss

Vaya!.

Muchas gracias metacortex. Ahora lo pruebo
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian
  #7 (permalink)  
Antiguo 09/11/2009, 11:33
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 9 meses
Puntos: 7
Respuesta: Añadir imagenes al rss

Lo he probado y tengo un problema que no acabo de entender.

He restaurado el archivo includes/feed.php. Antes una correccion. Habia dicho que tenia este codigo:

Código PHP:
the_content_rss(''0''get_option('rss_excerpt_length')) 
en el icono del feed. Mentira. Esta alojado en el archivo includes/feed-rss.php. Archivo que igualmente he tenido que modificar para inserta la llamada a tu funcion. De tal manera que en ese archivo feed-rss.php se construye el xml de la siguiente forma:

Código PHP:
<?php while (have_posts()) : the_post(); ?>
    <item>
        <title><?php the_title_rss() ?></title>
<?php if (get_option('rss_use_excerpt')) { ?>
        <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
<?php } else { // use content ?>
        <description><?php 
        add_action
('rss_item''img_rss');//aqui la llamada a tu funcion
        
the_content_rss(''0''get_option('rss_excerpt_length'))
        
?></description>
<?php ?>
        <link><?php the_permalink_rss() ?></link>
        <?php do_action('rss_item'); ?>
    </item>
<?php endwhile; ?>
Pues bien, no se porque, pero la imagen me la incluye despues de la etiqueta de cierre </description>. No se visualiza. Es muy raro, porque la funcion img_rss echa la primera imagen y luego viene la funcion the_content_rss que echa el content. Pero no deberia echarla despues?. Pego aqui el codigo fuente (control+u).

Código PHP:
<item>
 <
title>Nuevo modelo de la marca Lazer</title>
  <
description>
Una novedad lleg&#243; ayer a nuestros locales de la marca belga LAZER : el modelo Brava Royal negro / oro.

Con carcasa de fibra inyectada y look racing el LAZER Brava Royal gustar&#225; a todo tipo de motards que busquen un casco simple y eficaz a un precio asequible. Su peculiaridad ...
  
</description>
 <
link>http://localhost/blogEs/nuevo-modelo-de-la-marca-lazer/242</link>
<img src="http://localhost/blog/wp-content/uploads/2009/07/logolazer.jpg" />    
</
item
Otra cosa, he variado tu funcion, pues he sustituido el

Código PHP:
      $img .='<enclosure url="'.$ruta[0].'" type="image/jpg" />'
por:

Código PHP:
$img .= '<img src="'.$ruta[0].'" />'
Pero no creo que sea por eso, no?
__________________
=>=>=>=>=>=>=>=>=>=>=>=>=>
¡Disidente!
Frente Popular de Judea, Life of Brian

Última edición por AnisDelMono; 09/11/2009 a las 11:35 Razón: Me habia olvidado de una cosita
  #8 (permalink)  
Antiguo 09/11/2009, 11:57
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Añadir imagenes al rss

La imagen no se visualiza en el navegador pero sí en el lector RSS (lo que realmente importa). En cuanto a tus archivos de núcleo modificados, no los restaures, reemplázalos completamente por los originales.

La etiqueta <enclosure> tiene una función específica que es interpretada por motores específicos. Recuerda que en este punto ya no estás trabajando sobre un entorno HTML como tal, sino con XML.

Cuando estás armando un feed para ser mostrado, debes concentrarte en proveer una estructura correcta de etiquetas, toda vez que el lector las modela a gusto -es decir, a gusto de quien configura las opciones del lector, quien decide cómo quiere ver sus noticias- y se encarga de la presentación. Mientras tengas un XML bien estructurado tus feeds serán más accesibles. La mala interpretación de esta regla fue uno de los errores que cometí con WP Smart Image (ya está solucionándose).
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:14.