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(']]>', ']]>', $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(']]>', ']]>', $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.