web-dev-qa-db-fra.com

Appel de champs personnalisés pour les pages (pas les publications)

J'essaie de placer un petit code dans mon fichier modèle header.php. Je veux obtenir une valeur de champ personnalisé.

J'essaie d'appeler des champs personnalisés à partir de la page en cours outside of loop, btw.

Je n’ai aucun problème à faire cela lorsque j’ai besoin d’obtenir des valeurs de champ personnalisées à partir de posts, mais je ne peux pas sembler le faire pour les pages.

Voici mon code:

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

Je ne suis pas sûr de ce que je fais mal. J'ai essayé de changer $wp_query->post->ID; à ce $wp_query->page->ID; sans succès.

Toute aide est appréciée, merci!

1
RCorrie

essayez d'utiliser

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

ces deux mêmes. ne devrait faire aucune différence. plus tôt, j'ai donné de mauvais arguments. var_dump () va vous montrer ce qu'il est en train de faire. assurez-vous que l'ID est correct, il existe un texte "teaser". Vous pouvez également essayer d’utiliser un autre nom de méta (à des fins de test uniquement).

2
HungryCoder

Ceci n’a pas été testé, mais essayez:

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

Vous devrez soit commencer la boucle, puis la rembobiner:

$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

Ou simplement extraire l'ID du premier article de la requête:

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