Si no existe imagen destacada, mostrar el contenido del post
Antes de decidir hacer esta pregunta, busqué en Google y en este foro, pero no encontré respuesta a mi pregunta, aunque pueda parecer un duplicado.
De todos modos, creé un tipo de post personalizado que usa su imagen destacada. Ahora, me gustaría configurar que si no existe una imagen destacada, muestre el contenido del post y con eso me refiero a mostrar lo que sea que tenga mi post (en mi caso es un video de YouTube incrustado).
Hasta ahora he añadido a functions.php lo siguiente:
function zm_get_backend_preview_thumb($post_ID) {
$post_thumbnail_id = get_post_thumbnail_id($post_ID);
if ($post_thumbnail_id) {
$post_thumbnail_img = wp_get_attachment_image_src($post_thumbnail_id, 'thumbnail');
return $post_thumbnail_img[0];
}
}
function zm_preview_thumb_column_head($defaults) {
$defaults['featured_image'] = 'Imagen';
return $defaults;
}
add_filter('manage_posts_columns', 'zm_preview_thumb_column_head');
function zm_preview_thumb_column($column_name, $post_ID) {
if ($column_name == 'featured_image') {
$post_featured_image = zm_get_backend_preview_thumb($post_ID);
if ($post_featured_image) {
echo '<img src="' . $post_featured_image . '" />';
}
}
}
add_action('manage_posts_custom_column', 'zm_preview_thumb_column', 10, 2);
}
Y en mi página donde me gustaría mostrar el video en lugar de la imagen destacada, tengo el siguiente código:
<?php
// Argumentos de WP_Query
$args = array (
'post_type' => array( 'zm_gallery' ),
);
// La Consulta
$query_gallery = new WP_Query( $args );
// El Loop
if ( $query_gallery->have_posts() ) {
while ( $query_gallery->have_posts() ) {
$query_gallery->the_post();
echo '<ul>';
echo '<li>';
$name = get_post_meta($post->ID, 'ExternalUrl', true);
if( $name ) { ?>
<a href="<?php echo $name; ?>" target="_blank"><?php the_post_thumbnail(); ?></a>
<?php
} else {
the_post_thumbnail();
}
echo '</li>';
echo '</ul>';
}
} else {
if ( "" === $post->post_content ) {
the_post_thumbnail();
} else {
the_content();
}
}
// Restaurar datos originales del Post
wp_reset_postdata();
?>
Su ayuda sería muy apreciada. Gracias a todos por adelantado.
Me di cuenta de que tenía dos problemas con mi código en la página donde necesitaba mostrar el contenido de las publicaciones:
Coloqué lo siguiente:
if ( "" === $post->post_content ) { the_post_thumbnail(); } else { the_content(); }
en el lugar incorrecto.
Debería haber puesto esto debajo de la línea:
if( $name ) { ?> <a href="<?php echo $name; ?>"target="_blank"><?php the_post_thumbnail(); ?></a> <?php } else { //MI CÓDIGO DEBERÍA IR AQUÍ }
El único código que debería haber puesto en lugar del código del punto 1 es:
the_content();
Eso me dio lo que quería. Y problema resuelto. Espero que alguien encuentre esto útil en el futuro. PD: Intenté formatear la respuesta, pero algo salió mal. Aceptaría con gusto una edición para que se vea como debería.
