web-dev-qa-db-fra.com

image de secours pour l'image sélectionnée

Je souhaite utiliser une image de secours si aucune image sélectionnée n'est définie. J'utilise le code suivant, mais l'image n'est pas affichée ...

<?php if ( has_post_thumbnail()) : // Check if thumbnail exists ?>
    <?php the_post_thumbnail( array(334, 259) ); // Declare pixel size you need inside the array ?>
<?php else : // No thumbnail? Showing default is better UX than no image. ?>
    <img src="/wp/wp-content/themes/klicknet-theme/images/testbild.png" 
alt="testbild" width="334" height="259" title="Bild: <?php the_title(); ?>"> 
<?php endif; ?>

Des idées pourquoi?

1
tom84

Votre code semble correct et il devrait bien fonctionner. Mais il y a certaines choses que vous pouvez (et que vous devriez) réparer.

1. Vous n'utilisez pas d'URL absolue pour votre image de secours

Vous passez /wp/wp-content/themes/klicknet-theme/images/testbild.png en tant que src de votre image. Ce serait beaucoup mieux et plus sûr d'utiliser les fonctions WP. Par exemple, comme ceci:

<img src="<?php bloginfo('template_url'); ?>/images/testbild.png">

2. Vous n'échappez pas correctement au titre

Dans votre image de secours, vous utilisez l'attribut the_title() dans le titre. Mais vous n'y échappez pas en tant qu'attribut. Si le titre contient le caractère ", votre code HTML sera cassé. Un autre problème est que le titre peut contenir des balises HTML qui seront imprimées dans votre attribut.

Si vous voulez utiliser title comme attribut, vous devez utiliser the_title_attribute function. La version corrigée de cette ligne peut donc ressembler à ceci:

<img src="<?php bloginfo('template_url'); ?>/images/testbild.png" alt="testbild" width="334" height="259" title="<?php the_title_attribute( array( 'before' => 'Bild: ', 'after' => '' ) ); ?>"> 
1
Krzysiek Dróżdż