Je suis nouveau dans WordPress et j'apprends encore à partir de tutoriels, mais je suis confus avec leurs manières conflictuelles. Quelle est la différence entre ces deux façons de faire du titre un lien:
<h1>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h1>
et
<?php the_title(sprintf(
'<h1><a href="%s">',
esc_url(get_permalink())),
'</a></h1>');
?>
Est-ce un problème de performance? ou une sécurité? ou quoi?
merci.
Modifier:
Je sais que la fonction the_permalink()
intègre la fonctionnalité esc_url
alors que get_permalink
ne l’a pas. Donc dans mon cas, y a-t-il encore une différence?
La seconde forme peut aussi être pratique:
Nous pouvons également utiliser le paramètre tiers :
the_title( $before, $after, $echo );
assigner le titre à une variable.
Voici un exemple:
$title = the_title( '<h1 class="entry-title">', '</h1>', false );
Cela peut également aider à réduire l’utilisation des délimiteurs <?php ?>
.
Voici un exemple du Twenty Fifteen theme
if ( is_single() ) :
the_title( '<h1 class="entry-title">', '</h1>' );
else :
the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' );
endif;
mais il y a bien sûr différentes manières de se débarrasser de telles parties if/else.
Voici une forme alternative pour la comparaison:
<?php if( is_single() ) : ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php else : ?>
<h2 class="entry-title"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<?php endif; ?>
Aller avec le premier ensemble de code que vous avez fourni:
<h1>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h1>
En termes simples, il est beaucoup plus propre et simple à utiliser. Comme vous l'avez déjà mentionné, the_permalink()
couvre déjà la fonctionnalité esc_url()
. Alors pourquoi avez-vous besoin d'écrire plus de code alors qu'une des fonctions s'en charge? Moins est plus dans ce cas.
Il existe plusieurs façons de faire la plupart des choses dans WordPress. Soit ça, ou il n'y a aucun moyen.
Votre premier exemple a plus de sens. La seconde semble inutilement complexe sans aucun bénéfice.