Bueno he conseguido hacer una función utilizando el código de metacortex y un código de la
página de Wordpress que permite cargar también la imagen si se sube desde la biblioteca.
Solo utilizando el código de Wordpress que "matchea" la imagen:
Código PHP:
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}
... carga las imágenes attached y las posteadas desde la biblioteca, pero si lo que se publica en un post es "una galería completa" y no se publica ninguna imagen a parte, no carga nada nada.
Utilizando los dos códigos he conseguido solucionar esto:
Código PHP:
function imagendepost() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(!empty($first_img)){
return '<img src="'. $first_img.' " />';
}elseif( $images = get_children( array (
'post_parent' => get_the_ID(),
'post_type' => 'attachment',
'numberposts' => 1,
'post_mime_type' => 'image'
))){
foreach( $images as $image ) {
$imagen = wp_get_attachment_image( $image->ID, 'medium' );
echo $imagen;
}}elseif(empty($first_img)){
$first_img = get_bloginfo('template_url')."/imagenes/noimage.jpg";
}
return '<img src="'. $first_img.' " />';
}
No se si se posible simplificar o mejorar el código, de momento me funciona.
Un saludo y gracias a Metacortex que sin el inicio de su código no habría solucionado lo que necesitaba.