Obține ID-ul paginii curente din șablon

19 feb. 2018, 12:09:41
Vizualizări: 14.8K
Voturi: 1

Încerc să obțin ID-ul paginii din fișierul meu template-contact.php astfel:

global $post;
echo $post->ID;

Afișează 85 dar ID-ul paginii este 96, am nevoie de ID pentru a prelua meta-informațiile paginii curente.

Iată codul meu din șablon.

<?php /* Nume Șablon: Pagină de Contact */ ?>

<?php get_header() ?>
<?php 

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


?>
<?php get_footer() ?>

Vă rog să mă ajutați

4
Comentarii

Acel cod este corect (deși aș folosi get_the_ID() pentru a face același lucru). Unde exact în template încarci acest cod? Ești sigur că îl apelezi din interiorul loop-ului?

swissspidy swissspidy
19 feb. 2018 12:51:23

Am editat întrebarea și am adăugat codul template-ului meu, cum să obțin meta informațiile pentru pagină. În $post->ID primesc ID-ul unui post în loc de ID-ul paginii curente

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

Am rezolvat, trebuia doar să scriu the_post() înainte de global $post.

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

Vreau să subliniez că $wp_query->post->ID și get_the_ID() pot fi cache-uite în funcție de o varietate de teme, sisteme de construire a temelor, plugin-uri și alte setări. Postul de mai jos care utilizează get_queried_object_id funcționează ca cea mai fiabilă metodă în afara loop-ului dintr-o perspectivă "absolută". Am întâmpinat probleme când m-am bazat pe get_the_ID() în multe dintre aceste teme/sisteme moderne de construire, deoarece ele transmit ID-ul printr-o serie de pagini/șabloane de construcție care ofuscă ID-ul "REAL" al paginii pe care crezi că te afli, în funcție de ceea ce încerci să faci în șablon.

Christian Žagarskas Christian Žagarskas
7 aug. 2022 00:59:38
Toate răspunsurile la întrebare 1
1

Pentru a obține ID-ul paginii care este interogată din afara buclei sau înainte ca obiectul global post să fie setat, folosește get_queried_object_id().

<?php
/**
 * Template Name: Pagina de Contact 
 */

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
Comentarii

Răspunsul tău este cel corect. Vreau să subliniez că $wp_query->post->ID și get_the_ID() ar putea fi cache-uite în funcție de diverse pluginuri sau setări. Sunt de acord că get_queried_object_id funcționează.

Christian Žagarskas Christian Žagarskas
7 aug. 2022 00:58:59