Comment concaténer des chaînes avec des appels de fonction en utilisant l'écho?

StackOverflow https://stackoverflow.com/questions/2242861

  •  19-09-2019
  •  | 
  •  

Question

Je veux utiliser les valeurs renvoyées de deux appels de fonction dans ma echo'ed chaîne html.

<li><a href="the_permalink()">the_title()</a></li>

Les travaux suivants fins:

echo '<li><a href="';
echo the_permalink();
echo '">';
echo the_title();
echo '</a></li>';

... mais comment puis-je obtenir tous dans une seule déclaration?

Était-ce utile?

La solution

echo '<li><a href="', the_permalink(), '">', the_title(), '</a></li>';

Autres conseils

La raison pour laquelle vous avez des problèmes parce que the_permalink () et the_title () ne reviennent pas, ils font écho. Au lieu d'utiliser get_permalink () et $ post> post_title . Rappelez-vous get_permalink () nécessite l'identifiant de poste (post-$> ID) en tant que paramètre. Je sais que c'est irritant et contre-intuitif, mais comment fonctionne Wordpress (voir la subjectivité dans les commentaires à cette réponse.)

Ceci explique pourquoi le second exemple fonctionne dans votre question initiale. Si vous appelez la fonction qui imprime à partir d'une chaîne, la sortie se fera l'écho avant la fin de la chaîne.

Alors ceci:

echo ' this should be before the link: '.the_permalink().' But it is not.';

ne fonctionne pas comme prévu. Au lieu de cela, il affichera ceci:

http://example.com this should be before the link: But it is not.

En PHP, vous pouvez utiliser les deux guillemets simples et doubles. Quand je construis des chaînes avec HTML je commence généralement la chaîne avec une seule citation, de cette façon, je peux utiliser des guillemets doubles compatible HTML dans la chaîne sans échapper.

Donc il arrondir, il ressemblerait à quelque chose comme:

echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';

Ou comme vous avez initialement demandé, pour leur échapper tout simplement, mettre une barre oblique inverse avant la citation. Comme si (les guillemets simples ont été supprimées)

echo "<li><a href=\"".get_permalink($post->ID)."\">".$post->post_title."</a></li>";

Ceci est bien sûr en supposant que vous appelez cela de dans la boucle , sinon un peu plus que cela serait nécessaire pour obtenir la sortie désirée.

printf( '<li><a href="%s">%s</a></li>', the_permalink(), the_title() );

Utilisation concaténation (sauts de ligne non nécessaire):

echo '<li><a href="'
 . the_permalink()
 . '">'
 . the_title()
 . '</a></li>';
echo "<li><a href=".the_permalink().">".the_title()."</a></li>";

Utilisez <?php the_title_attribute() ?>. Il affiche ou retourne le titre du poste actuel. Il fait double emploi avec un peu la fonctionnalité de the_title (), mais fournit une version « propre » du titre en dépouillant les balises HTML et la conversion de certains caractères (y compris les guillemets) à leur entité de caractère équivalent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top