¿Qué puede causar que una imagen destacada no se muestre?

19 nov 2014, 13:15:19
Vistas: 293
Votos: 0

Estoy escribiendo un tema hijo para el tema editr y la imagen destacada no se muestra para una nueva entrada. Las imágenes destacadas sí aparecen para el contenido de demostración. Para la nueva entrada, se renderiza el siguiente marcado:

<div class="featured" data-img_bg="">
        <img src="" alt="" style="display: block;">
    </div>

La sección relevante de la plantilla es:

<?php if ( ( $show_thumb || $show_thumb == '' ) && has_post_thumbnail() ) { ?>

    <div class="featured" data-img_bg="<?php echo $image; ?>">
        <img src="<?php echo $image; ?>" alt="">
    </div>

    <?php } ?>

Esto está en una máquina virtual local con Vagrant ejecutando Ubuntu 14.04, nginx, php 5.6.

He marcado 'Mostrar miniatura destacada?' y '¿Entrada destacada?' en el editor de entradas. Al principio de la plantilla, encuentro que el valor de $image está vacío:

<?php
$show_thumb = get_post_meta(get_the_ID(), 'aq_show_thumbnail', TRUE);

$thumb = wp_get_attachment_url( get_post_thumbnail_id(), 'full');
echo 'thumb value is set to'.$thumb;
$image = aq_resize( $thumb, 1000, 400, true );
echo 'image value is set to'.$image;
?>

ACTUALIZACIÓN

Al depurar con xdebug se muestra que la función aq_resize falla en el siguiente código:

else {

$editor = wp_get_image_editor($img_path);

if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) )
    return false;

$resized_file = $editor->save();

if(!is_wp_error($resized_file)) {
    $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path']);
    $img_url = $upload_url . $resized_rel_path;
} else {
    return false;
}

}

$editor está configurado como 'No se pudo seleccionar ningún editor.'

2
Comentarios

Asegúrate de ejecutar el código dentro del bucle. Verifica el valor de $thumb, get_post_thumbnail_id() etc..

Sisir Sisir
19 nov 2014 13:38:11

@Sisir gracias. El valor de thumb es la ruta a la imagen.

codecowboy codecowboy
19 nov 2014 13:43:11
Todas las respuestas a la pregunta 2
0

La extensión PHP GD no estaba instalada en mi máquina de desarrollo. Instalar php5-gd resolvió el problema - sudo apt-get install php5-gd

Al depurar con xdebug, descubrí que la función aq_resize del tema fallaba en el siguiente código:

else {

    $editor = wp_get_image_editor($img_path);

    if ( is_wp_error( $editor ) || is_wp_error( $editor->resize( $width, $height, $crop ) ) )
        return false;

    $resized_file = $editor->save();

    if(!is_wp_error($resized_file)) {
        $resized_rel_path = str_replace( $upload_dir, '', $resized_file['path']);
        $img_url = $upload_url . $resized_rel_path;
    } else {
        return false;
    }

}

$editor estaba configurado como 'No se pudo seleccionar ningún editor.'

19 nov 2014 14:01:24
1

¿Se envía la salida HTML a la página? Si no, entonces el problema casi seguro está en tu sentencia if. ¿Debería ser:

if ( ( $show_thumb || $show_thumb !== '' ) && has_post_thumbnail() ) 

en lugar de:

if ( ( $show_thumb || $show_thumb == '' ) && has_post_thumbnail() ) 
19 nov 2014 13:43:56
Comentarios

sí, el marcado se genera. Es solo que el valor de $image está vacío.

codecowboy codecowboy
19 nov 2014 13:46:51