Ottieni l'ID della pagina corrente dal template

19 feb 2018, 12:09:41
Visualizzazioni: 14.8K
Voti: 1

Sto cercando di ottenere l'ID della pagina dal mio template template-contact.php in questo modo:

global $post;
echo $post->ID;

Mi mostra 85 ma l'ID della pagina è 96, ho bisogno di ottenere l'ID corretto perché voglio recuperare i meta della pagina corrente.

Ecco il codice del mio template.

<?php /* Template Name: Pagina Contatti */ ?>

<?php get_header() ?>
<?php 

global $post;
echo get_post_meta($post->ID, 'contact_page', true);


?>
<?php get_footer() ?>

Per favore aiutami

4
Commenti

Quel codice è corretto (anche se io userei get_the_ID() per fare la stessa cosa). Dove nel tuo template lo stai caricando esattamente? Sei sicuro di chiamarlo all'interno di the loop?

swissspidy swissspidy
19 feb 2018 12:51:23

Ho modificato la domanda e aggiunto il codice del mio template, come ottenere le informazioni meta per la pagina, in $post->ID sto ottenendo l'ID di un post invece dell'ID della pagina corrente

Anand Siddharth Anand Siddharth
19 feb 2018 13:24:02

ho capito, dovevo semplicemente scrivere the_post() prima di global $post.

Anand Siddharth Anand Siddharth
19 feb 2018 13:32:13

Voglio sottolineare che $wp_query->post->ID e get_the_ID() potrebbero essere memorizzati nella cache a seconda di una varietà di temi, sistemi di costruzione di temi, plugin e altre impostazioni. Il post qui sotto che utilizza get_queried_object_id funziona come il metodo più affidabile al di fuori del loop da una prospettiva "assoluta". Mi sono imbattuto in un problema nel "fidarmi" di get_the_ID() in molti di questi moderni temi/sistemi di costruzione là fuori perché passano l'ID attraverso una serie di pagine/modelli del builder che oscurano il "VERO" ID della pagina su cui pensi di trovarti, a seconda di quello che stai cercando di fare nel template.

Christian Žagarskas Christian Žagarskas
7 ago 2022 00:59:38
Tutte le risposte alla domanda 1
1

Per ottenere l'ID della pagina interrogata dall'esterno del loop o prima che l'oggetto post globale sia stato impostato, utilizza get_queried_object_id().

<?php
/**
 * Template Name: Pagina Contatti 
 */

get_header();
?>

<?php
$page_id = get_queried_object_id();
echo get_post_meta( $page_id, 'contact_page', true);
?>

<?php get_footer() ?>
19 feb 2018 13:39:21
Commenti

La tua è la risposta corretta. Voglio far notare che $wp_query->post->ID e get_the_ID() potrebbero essere memorizzati nella cache a seconda di una varietà di plugin o impostazioni. Concordo che get_queried_object_id funzioni.

Christian Žagarskas Christian Žagarskas
7 ago 2022 00:58:59