Dacă imaginea reprezentativă nu există, afișează conținutul articolului
Înainte de a decide să pun această întrebare, am căutat pe Google și pe acest forum, dar nu am găsit niciun răspuns la întrebarea mea, chiar dacă poate părea duplicat.
Oricum, am creat un custom post type care folosește imaginea reprezentativă. Acum, aș dori să setez ca dacă nu există imagine reprezentativă, să se afișeze conținutul postării, iar prin asta mă refer la orice se află în postarea mea (în cazul meu este un videoclip YouTube embedat).
Până acum am adăugat în functions.php următoarele:
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'] = 'Imagine';
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);
}
Iar în pagina unde aș dori să afișez videoclipul în locul imaginii reprezentative, am următorul cod:
<?php
// Argumente WP_Query
$args = array (
'post_type' => array( 'zm_gallery' ),
);
// Interogarea
$query_gallery = new WP_Query( $args );
// Bucla
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();
}
}
// Restaurare date post originale
wp_reset_postdata();
?>
Ajutorul vostru ar fi foarte apreciat. Vă mulțumesc tuturor anticipat.
Am reușit să realizez că aveam două probleme cu codul meu pe pagina unde aveam nevoie de conținutul postării afișat:
Am pus următoarele:
if ( "" === $post->post_content ) { the_post_thumbnail(); } else { the_content(); }
în locul greșit.
Ar fi trebuit să pun asta sub linia:
if( $name ) { ?> <a href="<?php echo $name; ?>"target="_blank"><?php the_post_thumbnail(); ?></a> <?php } else { //CODUL MEU AR TREBUI SĂ FIE AICI }
Singurul cod pe care ar fi trebuit să-l pun în locul codului de la punctul 1 este:
the_content();
Asta mi-a oferit ceea ce doream. Și problemă rezolvată. Sper că acest lucru va fi util cuiva în viitor. P.S. Am încercat să formatăm răspunsul, dar ceva nu a mers bine. Aș accepta cu plăcere o editare pentru a arăta cum ar trebui.
