<p>タグを削除せずに「post_content」を取得する方法は?


20

特定の投稿の投稿コンテンツを取得しようとしています:

$post = get_post(/* id */);
$content = $post->post_content;

ただし、これにより、改行なしでコンテンツが取得され、すべての<p>タグが省略されます。

<p>タグを削除せずに投稿コンテンツを取得する適切な方法は何ですか(投稿ページまたは投稿エディタの「テキスト」タブに表示されます)。

回答:


30

これまでのところ、どちらの答えも正しいですが、より徹底的な答えが必要と思われます。

これを使用する場合:

$content = wpautop( $post->post_content );

投稿コンテンツに段落タグを追加する1つの関数を適用しています。wpautop()は、にフックする多くの関数(プラグイン関数を含む)の1つですthe_content

$content = apply_filters('the_content', $post->post_content);

デフォルトthe_contentで含まwpautop()れるフィルターを介して投稿コンテンツが実行されます。

最後に、ループ内にいる場合、これを行うことができます:

$content = apply_filters( 'the_content', get_the_content() );

これは本質的に2番目のコードスニペットのラッパーですが、もちろん、少し見栄えが良くなります。更新2018年9月1日:に基づいて改訂コメント。小道具@timmb。

一般的に、コアWP関数を使用することで、後方互換性が(少なくとも理論的には)向上するはずなので、これを行うための好ましい「正しい方法」は最後から最初です。それから行う唯一の他の決定は、WordPressとプラグインが投稿コンテンツも変更できるようにするかどうかです。その場合は、必ず2番目または3番目のオプションを使用してください。


1
この最終的な解決策は間違っていると思います。codex.wordpress.org/Function_Reference/get_the_contentから:「the_content()との重要な違いは、get_the_content()は「the_content」フィルターを介してコンテンツを渡さないことです。」これは、正しいアプローチが示唆されるものではないでしょう$content = apply_filters('the_content', get_the_content);か?
ティムMB


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