Se l'immagine in evidenza non esiste, mostra il contenuto del post

7 ott 2016, 13:45:31
Visualizzazioni: 14.1K
Voti: 3

Prima di decidere di fare questa domanda, ho cercato su Google e su questo forum, ma non ho trovato risposta alla mia domanda, anche se potrebbe sembrare un duplicato.

In ogni caso, ho creato un custom post type che utilizza la sua immagine in evidenza. Ora, vorrei impostare che se non esiste un'immagine in evidenza, mostri il contenuto del post e con questo intendo mostrare qualsiasi cosa sia presente nel mio post (nel mio caso un video YouTube embeddato).

Finora ho aggiunto a functions.php quanto segue:

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'] = 'Immagine';
    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);
}

E nella mia pagina dove vorrei mostrare il video invece dell'immagine in evidenza, ho il seguente codice:

<?php
// Argomenti WP_Query
$args = array (
    'post_type'              => array( 'zm_gallery' ),
);
// La Query
$query_gallery = new WP_Query( $args );

// Il 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();
    }
}

// Ripristina i dati originali del Post
wp_reset_postdata();
?>

Il vostro aiuto sarebbe molto apprezzato. Grazie a tutti in anticipo.

0
Tutte le risposte alla domanda 2
1

the_post_thumbnail mostrerà direttamente la miniatura, quindi potresti provare con:

if ( has_post_thumbnail() ) {
  the_post_thumbnail();
} else {
  the_content();
}

Spero sia d'aiuto

7 ott 2016 17:07:22
Commenti

Grazie per la risposta @David. Per fortuna, sono riuscito a risolverlo da solo. Grazie comunque, la tua risposta è corretta in ogni caso. Saluti!

Nancy Nancy
8 ott 2016 10:09:01
0

Mi sono reso conto di avere due problemi con il mio codice nella pagina dove dovevo visualizzare il contenuto del post:

  1. Avevo inserito il seguente codice:

        if ( "" === $post->post_content )
        {
             the_post_thumbnail();
        }
        else
        {
            the_content();
        } 
    

    nel posto sbagliato.

    Avrei dovuto inserirlo dopo questa riga:

    if( $name ) { ?>
            <a href="<?php echo $name; ?>"target="_blank"><?php the_post_thumbnail(); ?></a>
            <?php } else {
        //IL MIO CODICE DOVREBBE ANDARE QUI
    } 
    
    1. L'unico codice che avrei dovuto inserire invece del codice al punto 1 è:

      the_content();
      

In questo modo ho ottenuto ciò che volevo. E problema risolto. Spero che qualcuno trovi utile questa informazione in futuro. P.S. Ho provato a formattare la risposta, ma qualcosa non va. Accetterei volentieri modifiche per farla apparire come dovrebbe.

7 ott 2016 14:34:14