私はプラグインを書いていて、いくつかのカスタムメタ情報に基づいて投稿の最後にデータを追加する方法を見つけようとしています。
だから私はこれまでのところこれをやっている:
add_filter('the_content', 'AppendMeta');
そして、これが "AppendMeta"関数です。
AppendMeta($content) {
echo $content; // Echo out post content
$PersonName = get_post_meta($post->ID, 'PersonName', true);
echo 'Person: ' . $PersonName;
}
このコードは、$ post-> IDを投稿のIDに置き換えれば機能しますが、ユーザーが現在ナビゲートしている投稿に基づいて機能するために必要です。投稿IDをパラメータとしてどのように渡しますか? $ post-> IDはこのシナリオでは動作しません、そして私はその理由を見つけることができません。
決して気にしないで、私はget_the_ID();
を使うことができることを知った。
この関数はthe_content
フィルタ内の投稿IDを返します。この関数は単にグローバル$post
オブジェクトを宣言し、そのIDを返します。
add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
echo $content; // Echo out post content
$PersonName = get_post_meta(get_the_ID(), 'PersonName', true);
echo 'Person: ' . $PersonName;
}
get_the_ID()
を使用したくない場合は、使用する前に単に$post
オブジェクトをグローバルに宣言する必要があります。
add_filter('the_content', 'wpse51205_content')
wpse51205_content($content) {
global $post;
echo $content; // Echo out post content
$PersonName = get_post_meta($post->ID), 'PersonName', true);
echo 'Person: ' . $PersonName;
}
the_ID()
はループの中でのみ使われることになっています、さもなければそれに頼ることができません。関数呼び出し内で$GLOBALS['post']
オブジェクトを使用したほうがよいでしょう。