1. ホーム
  2. php

[解決済み] WordPress:get_the_content()とthe_content()の違いについて

2022-02-25 11:52:07

質問

WordPressで新しいテーマを作成する際、get_the_content()関数に多くの時間を費やしました。

  <div class="clearfix">
      <div>
        <p><?=get_the_content();?></p>
      </div>
  </div>

ショートカットを処理せず、段落をしないようです。

そして、the_content();に置き換えたら、段落とショートカットが動作するようになりました。

  <div class="clearfix">
      <div>
        <p><?=the_content();?></p>
      </div>
  </div>

私の質問です。get_the_content();と比較して、the_content();はどのような処理を追加しているのでしょうか?

どのように解決するのですか?

J Quest さんから適切な回答がありましたが、少し詳しく説明したいと思います。一般的に、WordPressには、2種類の投稿変数関数があります。 get_ 関数と the_ 関数を使用します。

get_ のような関数があります。 get_the_content() または get_the_ID() は必要な情報を返し、それを操作してページに印刷する必要があります。いくつかの例を挙げる。

$content = get_the_content();
$content = apply_filters( 'the_content', $content );
$content = str_replace( 'foo', 'bar', $content );

echo 'Post #'. get_the_ID() . $content;

the_ のような関数があります。 the_content() the_ID() 実際に echo が返され、該当する場合は適切な値に対して "デフォルトフィルタ" が適用されます。これらの関数は、エコーする必要はありません。

echo get_the_ID();

とは機能的に同じです。

the_ID();

のドキュメントを見ると the_ID() の値を出力していることがわかるでしょう。 get_the_ID() . ソースから。

function the_ID() {
    echo get_the_ID();
}

その流れで、もし試しに the_ 関数を変数として使用すると、ページ全体にエコーされた変数の痕跡を残すことになります。

$id = the_ID();
echo 'Post ID: '.$id;

が出力されます。

123Post ID: 123

を使用する場合 get_the_content() を実行し、ショートコードを実行させるか、あるいは do_shortcode() 関数、またはもっと良い方法は the_content フィルタを使用します。

$content = get_the_content();

echo do_shortcode( $content );
// Or:    
echo apply_filters( 'the_content', $content );

もし、何も操作せずに投稿内容をテンプレートに吐き出すだけなら、一般的には (echo または echo short タグを使用しない) 方がよいでしょう。

the_content();