私はテーマの調整に取り組んでおり、投稿の内容を爆発させてテキストを削除する必要があります。次のコードは私が使っているものです。
$custom_Get_Post_Title = explode('|',get_post()->post_content);
echo "<h4>" . $custom_Get_Post_Title[0] . "</h4>";
echo "<p>" . $custom_Get_Post_Title[1] . "</p>";
もともと、開発者はフォローのコードを使って投稿内容を表示していましたが、データを爆発させるのは困難でした。
global $post;
setup_postdata($post);
the_content();
私の質問 :両方とも投稿内容を取得するこれら二つの方法の違いは何ですか?
post_content
は、 WP_Post
オブジェクトの プロパティ です。 WP_Post
は、データベースからの投稿データを表すオブジェクトです。そのためpost_content
にはデータベースに保存されている生のコンテンツが含まれています。
the_content()
は現在の投稿の内容を表示するテンプレートタグです。 '現在の投稿'は、関数の実行時にグローバル$post
変数が設定されているものです。グローバル$post
変数は通常while( have_posts() ) : the_post();
を使って The Loop 内に設定されます。
重要な違いは、the_content()
が生のコンテンツを表示用に準備するいくつかのフィルタを通して処理することです。これらは、段落タグの追加、ビデオなどの埋め込み用のURLへの変換、スマート引用符などへの引用などの記号の変換などを行います。多くのプラグインは、共有ボタンなどを追加するためにもこのフィルタを使用します。
そのため、post_content
をエコーするだけでは、おそらく正しく表示されません。手動でthe_content
フィルターを適用することによって、生データに対するthe_content()
の出力を模倣することができます。だからあなたの例ではあなたがするだろう:
$post = get_post();
$split_content = explode( '|', $post->post_content );
echo '<h4>' . $split_content[0] . '</h4>';
echo apply_filters( 'the_content', $split_content[1] );
get_post()
はglobal $post
と同じです
the_content()
のような関数はループの内側でのみ使用できます。
setup_postdata()
関数はそれらの関数を利用可能にするために使うことができます。
一番上の例は、次のように書き直すことができます。
gloabl $post;
$custom_Get_Post_Title = explode('|',$post->post_content);
あるいは、一番下の例と同じようなことをすることができます。
global $post;
// setup_postdata($post); <- not really needed
$theContent = get_the_content($post->ID); // can used post-id to retrieve specific
$custom_Get_Post_Title = explode('|',get_post()->post_content);