web-dev-qa-db-ja.com

ページ(投稿ではない)のカスタムフィールドを呼び出す

テンプレートのheader.phpファイルに小さなコードを入れようとしています。カスタムフィールド値を取得したい.

現在のページoutsideからカスタムフィールドを呼び出そうとしています、ところで。

投稿からカスタムフィールドの値を取得する必要がある場合は、これを実行しても問題ありませんが、ページに対しては実行できません。

これが私のコードです:

global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'teaser-text', true);

何が悪いのかわからない。私は$wp_query->post->ID;をこの$wp_query->page->ID;に変更しても成功しませんでした。

任意の助けは大歓迎です、ありがとうございました!

1
RCorrie

使ってみてください

get_metadata('post', $postid, 'teaser-text, true);

これら2つは実際には同じです。何の違いもないはずです。以前私は間違った議論をした。 var_dump()は、実際に何が起きているのかを表示します。 IDが正しいこと、 'teaser-text'が存在することを確認してください。他のメタ名を使用して試すこともできます(テスト目的のみ)。

2
HungryCoder

これはテストされていませんが、試してみてください。

if ( is_page() ){
    $page_id = get_queried_object_id();
    $meta = get_post_meta( $post_id, 'teaser-text',true)
}
1
Stephen Harris

ループを開始してから巻き戻す必要があります。

$wp_query->the_post(); // Now $post is the first post (page) in the loop
echo get_post_meta( $post->ID, 'teaser-text', true );`
$wp_query->rewind; // This rewinds the query so the loop functions normally

あるいは、クエリの最初の投稿からIDを取得するだけです。

echo get_post_meta( $wp_query->posts[0]->ID, 'teaser-text', true );
0
Dagan Henderson