ループの外でIDで投稿コンテンツを取得したいので、次のコードを使用しています:
_ echo get_post_field('post_content', $postid);
_
正常に機能しますが、投稿にショートコードが含まれていると、ショートコードが正しく機能しません。ショートコードをプレーンテキストとしてエコーするだけです。
例:エディターで次のコードを使用して、画像と画像内のキャプションテキストを表示しています。
_ [caption id="attachment_23" align="alignnone" width="300"]<img class="size-medium wp-image-23 " alt="" src="http://localhost/wordpress/wp-content/uploads/2014/03/Desert-300x225.jpg" width="300" height="225" /> this is caption[/caption]
_
しかし、関数get_post_field()
を使用してこの投稿コンテンツを取得すると、キャプションテキストを表示する代わりに、次のように表示されます。
_ [caption id="attachment_23" align="alignnone" width="300"]this is caption[/caption]
_
解決策はありますか?
N.B:コンテンツを取得するためにajaxを使用しています
これは機能します:
echo do_shortcode(get_post_field('post_content', $postid));
編集
Ajax内でショートコードを強制的に出力したい場合は、 AJAXリクエスト 内でショートコードを実行する)を参照してください。
コンテンツを表示する前にフィルタリングする必要があるため、次のコードを試してください。
_echo apply_filters( 'the_content', get_post_field('post_content', $postid) );
_
更新: _wp_ajax
_にフックされたajax呼び出しを使用してショートコードを出力することはできません。 _WP Ajax
_は、_admin.php
_を介してパブリックコールとクローズドコールの両方を実行します。これは、_/wp-includes/shortcodes.php
_内にあるdo_shortcode()
などのwp環境全体にアクセスできないことを意味します。
これは私にとってはうまくいきます。
echo apply_filters( 'the_content'、get_post_field( 'post_content'、$ postid));
私はループの外でそれをしているので。