PHPのベストプラクティス


11

single.phpなどのテンプレートを実行していて、phpがhtmlでラップされている場合、次のことを行うのが最善です。

  1. PHPを起動して停止しますか?例えば

     <h1 class="post-tilte"><?php the_title(); ?></h1>
     <p class="post-content"><?php the_content();?></p>

または

  1. Echo HTMLとEscape PHP?例えば ​​-

    <?php echo '<h1 class="post-title">' . get_the_title() . '</h1>
    <p class="post-content"' . get_the_content() . '</p>

私はあらかじめ解放された選択肢がなく、自分が両方をやっていることに気づきます。


6
最初の方法は、よりデザイナーフレンドリーです。したがって、HTMLが多く、PHPが少しあるテンプレートでは、最初のテンプレートを実行します。2つ目は、PHPが多くHTMLが少しある場合に便利です。でそれを行うfunctions.phpか、プラグインなど
Fayaz

3
あなたもそこにあるのを忘れていましたprintf( '<h1 class="post-title">%s</h1>', get_the_title() );
Howdy_McGee

回答:


10

WordPressはコーディング言語とレイアウト言語の組み合わせを使用しているため、この問題は関係があります。テンプレート言語、構文を使用する場合、このトピックは関係ありません。しかし、あなたの質問に。テーマのサンプルソースを使用する場合、htmlのようなレイアウト言語を使用する場合は、最初の言語を使用することをお勧めします。デザイナーやユーザーにとってははるかに読みやすいため、マークアップを読む必要があります。マークアップに関する概要を作成したり、開始タグと終了タグを用意したりする方が簡単です。

プラグインに含める場合、より多くのロジックとフローを含むコードは、実装が容易な2番目の例です。メイントピックはマークアップではなくphpであり、これはソースに表示されます。これは、このマークアップをテンプレートファイルから除外し、ロジックからマークアップを分離することについても検討する必要があります。


1
前者のもう1つの利点は、カーソルを置くと特定のエディターが対応する開始タグまたは終了タグを強調表示することですが、後者は通常その利便性を損なうことになります。
MonkeyZeus 2017


5

上記の回答で説明したように、最初の方法はデザイナーにとって使いやすく、2番目の方法はプラグインや複雑なphpコードの場合にhtmlタグの数が少ない場合に適しています。

ただし、ほとんどのWordPressテンプレートタグにはパラメータbeforeafterパラメーターがあり、関数呼び出し内でHTMLコードを使用するのに適しています。

たとえば、the_title3つのパラメータがある場合

the_title( $before, $after, $echo );

以下のようなパラメータの前後にhtmlを渡すことができます

the_title( '<h2 class="title">', '</h2>', true );

この方法の利点は

  • デザイナーフレンドリー
  • タイトルが空の場合、htmlタグを印刷しません
  • 単純なテンプレートファイルだけでなく、複雑なphpコードでも使用できます。

0

次の理由により、最初の方法が推奨されます。

  • 固定HTMLレイアウトを動的コンテンツから明確に分離します。
  • 読みやすいです。
  • 通常、文字列内のhtml属性は認識されないため、ほとんどのエディターで構文強調表示によってサポートされます。
  • HTMLとPHPが簡単に混ざり合うのを防ぎます。

上記の理由により、最初の方法では、コードが理解しやすくなり、保守が容易になります。

私の経験では、状況によっては、2番目の方法を使用する方が便利な場合があります。ただし、これは通常、弱い(ソフトウェア)設計が原因であり、警告のサインと見なす必要があります。


0

2行のコードしか表示されていないため、コード例は限界的ですが、全体的な答えはかなり状況的なものだと思います。HTMLブロック内でPHP行を使用している場合は、最初の方法を使用します。PHPブロック内でHTML行を使用している場合は、2番目の行を使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.