web-dev-qa-db-fra.com

Si l'image sélectionnée n'existe pas, afficher le contenu du message

Avant de décider de poser cette question, j'ai cherché dans ce forum sur Google, mais je n'ai trouvé aucune réponse à ma question, même si cela peut sembler être un doublon.

Quoi qu'il en soit, j'ai créé un type de message personnalisé qui utilise son image sélectionnée. Maintenant, je voudrais définir si aucune image sélectionnée n'existe, montrer le contenu du message et par là, je veux dire tout ce qui est dans mon message (dans mon cas, il s'agit d'une vidéo youtube incorporée).

Jusqu'à présent, j'ai ajouté à functions.php ce qui suit:

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

Et dans ma page où je voudrais montrer la vidéo à la place de l'image sélectionnée, j'ai le code suivant:

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

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

// Restore original Post Data
wp_reset_postdata();
?>

Votre aide serait extremement appreciee. Merci d'avance à tous.

1
Nancy

the_post_thumbnail fera écho à la vignette alors essayez peut-être

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

J'espère que cela t'aides

2
David

J'ai réussi à réaliser que j'avais deux problèmes avec mon code sur la page où j'avais besoin d'afficher le contenu affiché:

  1. Je mets ce qui suit:

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

    au mauvais endroit.

    J'aurais dû mettre ceci en dessous de la ligne:

    if( $name ) { ?>
            <a href="<?php echo $name; ?>"target="_blank"><?php the_post_thumbnail(); ?></a>
            <?php } else {
        //MY CODE SHOULD GO HERE
    } 
    
    1. Le seul code que j'aurais dû mettre à la place du code du point 1 est:

      the_content();
      

Cela m'a donné ce que je voulais. Et problème résolu. J'espère que quelqu'un trouvera cela utile à l'avenir. P.s. J'ai essayé de formater la réponse, mais quelque chose ne va pas. J'accepterais volontiers éditer pour le faire paraître comme il se doit.

0
Nancy