J'ai besoin de faire écho à beaucoup de PHP et HTML.
J'ai déjà essayé l'évidence, mais ça ne marche pas:
<?php echo '
<?php if ( has_post_thumbnail() ) { ?>
<div class="gridly-image"><a href="<?php the_permalink() ?>"><?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) ));?></a>
</div>
<?php } ?>
<div class="date">
<span class="day">
<?php the_time('d') ?></span>
<div class="holder">
<span class="month">
<?php the_time('M') ?></span>
<span class="year">
<?php the_time('Y') ?></span>
</div>
</div>
<?php } ?>';
?>
Comment puis-je le faire?
Vous n'avez pas besoin de générer les balises php
:
<?php
if ( has_post_thumbnail() )
{
echo '<div class="gridly-image"><a href="'. the_permalink() .'">'. the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) )) .'</a></div>';
}
echo '<div class="date">
<span class="day">'. the_time('d') .'</span>
<div class="holder">
<span class="month">'. the_time('M') .'</span>
<span class="year">'. the_time('Y') .'</span>
</div>
</div>';
?>
Vous ne pouvez pas exécuter de code PHP dans une chaîne telle que celle-ci. Ça ne marche pas. De même, lorsque vous êtes "sorti" du code PHP (?>
), tout texte en dehors des blocs PHP est considéré comme une sortie, de sorte que l'instruction echo
n'est pas nécessaire.
Si vous avez besoin d'effectuer une sortie multiligne avec un bloc de code PHP, utilisez un HEREDOC :
<?php
$var = 'Howdy';
echo <<<EOL
This is output
And this is a new line
blah blah blah and this following $var will actually say Howdy as well
and now the output ends
EOL;
Utilisez Heredocs pour générer des chaînes multi-lignes contenant des variables. La syntaxe est ...
$string = <<<HEREDOC
string stuff here
HEREDOC;
La partie "HEREDOC" est comme les guillemets et peut être ce que vous voulez. La balise de fin doit être la seule chose sur sa ligne, c’est-à-dire aucun espace avant ou après, et doit se terminer par deux points Pour plus d'informations consultez le manuel .
Utilisez la fonction show_source();
de PHP. Recherchez plus de détails dans - show_source. Ceci est une meilleure méthode, je suppose.
L'ensemble interne de guillemets simples dans votre code tue la chaîne. Chaque fois que vous cliquez sur un devis, il termine la chaîne et continue le traitement. Vous voudrez quelque chose comme:
$thisstring = 'this string is long \' in needs escaped single quotes or nothing will run';
Pour ce faire, vous devez supprimer tous les caractères '
de votre chaîne ou utiliser un caractère d'échappement. Comme:
<?php
echo '<?php
echo \'hello world\';
?>';
?>
Une autre option consisterait à utiliser if
avec deux points et un endif
à la place des crochets:
<?php if ( has_post_thumbnail() ): ?>
<div class="gridly-image">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('summary-image', array('class' => 'overlay', 'title'=> the_title('Read Article ',' now',false) )); ?>
</a>
</div>
<?php endif; ?>
<div class="date">
<span class="day"><?php the_time('d'); ?></span>
<div class="holder">
<span class="month"><?php the_time('M'); ?></span>
<span class="year"><?php the_time('Y'); ?></span>
</div>
</div>