私はWordPressの初心者で、まだチュートリアルから学んでいますが、それらの相反する方法で混乱しています。タイトルをリンクにする2つの方法の違いは何ですか。
<h1>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h1>
そして
<?php the_title(sprintf(
'<h1><a href="%s">',
esc_url(get_permalink())),
'</a></h1>');
?>
それはパフォーマンスの問題ですか?またはセキュリティ?または何?
ありがとう。
編集:
関数the_permalink()
にesc_url
の機能が埋め込まれているのに対し、get_permalink
には埋め込まれていないことを私は知っています。だから私の場合、まだ何か違いはありますか?
2番目の形式も便利です。
third パラメータを使うこともできます。
the_title( $before, $after, $echo );
タイトルを変数に割り当てます。
これが例です:
$title = the_title( '<h1 class="entry-title">', '</h1>', false );
これは<?php ?>
デリミタの使用を減らすのにも役立ちます。
これはTwenty Fifteenテーマの example です。
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;
しかし、そのようなif/else部分を取り除くには、もちろんさまざまな方法があります。
これは比較のための代替形式です:
<?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; ?>
あなたが提供したコードの最初のセットに行きます:
<h1>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h1>
簡単に言えば、使用する方がはるかにクリーンで簡単です。すでに述べたように、the_permalink()
はすでにesc_url()
機能をカバーしています。では、いずれかの機能が面倒を見ているのに、なぜもっとコードを書く必要があるのでしょうか。この場合は少ないです。
WordPressでほとんどのことをするには複数の方法があります。それとも、まったく方法がありません。
あなたの最初の例はもっと理にかなっています。 2つ目は、メリットがないために不必要に複雑に思えます。