¿Cómo obtener el ID de la página actual fuera del bucle?

17 sept 2014, 16:55:31
Vistas: 281K
Votos: 59

¿Cómo obtener el ID de la página actual fuera del bucle?

9
Comentarios

Extraño, ¿cómo estás usando el código, qué has intentado? ¿Qué errores estás obteniendo? Tal como está, es difícil ayudarte y todas las respuestas son un tiro en la oscuridad. Por favor, realiza una [edición]

Pieter Goosen Pieter Goosen
17 sept 2014 17:06:45

<?php global $post; $thePostID=$post->ID;?> <?php elseif($thePostID==35) : ?>

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 sept 2014 17:12:55

Por favor, realiza una [edición] con todo el código/información adicional. No uses la sección de comentarios para cosas que deberían estar en tu pregunta :-)

Pieter Goosen Pieter Goosen
17 sept 2014 17:14:17

Tu publicación ha sido marcada automáticamente como de baja calidad, por favor cumple con mis solicitudes anteriores :-)

Pieter Goosen Pieter Goosen
17 sept 2014 17:15:23

No estoy recibiendo ningún error, en realidad quiero mostrar un mapa de Google en mi página, pero el mapa no se está mostrando...

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 sept 2014 17:17:52

En header.php estoy usando if else para mostrar según los ID de página

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 sept 2014 17:18:35

Como dije, toda esa información debería ir en tu pregunta, no en la sección de comentarios. Por favor [edit] tu pregunta

Pieter Goosen Pieter Goosen
17 sept 2014 17:19:52

Estimado @Programmer, por favor lee [ask]. Has recibido avisos automáticos sobre la calidad de tu publicación. Te han dado sugerencias sobre cómo solucionarlo. Por favor, intenta superar esto para que tu pregunta pueda permanecer abierta y no recibas votos negativos. Gracias.

kaiser kaiser
12 ene 2015 17:26:52

Ya has aceptado una respuesta, pero la respuesta correcta (posiblemente una pregunta duplicada) está aquí: http://wordpress.stackexchange.com/a/109468/21376

s_ha_dum s_ha_dum
19 ago 2015 17:00:47
Mostrar los 4 comentarios restantes
Todas las respuestas a la pregunta 5
5
89

Puedes simplemente hacer,

$page_id = get_queried_object_id();
7 may 2018 19:44:53
Comentarios

Esto debería marcarse como la respuesta...

Lezz Lezz
28 ene 2020 11:59:27

De acuerdo. Esta debería ser la respuesta.

CJWEB CJWEB
8 mar 2020 06:44:35

Definitivamente debería ser la respuesta correcta. Estoy tratando de obtener el ID actual de una entrada o una página, y esta es la única manera que me da el ID correcto sin tener que codificar condiciones manualmente.

Felipe Rugai Felipe Rugai
22 may 2020 18:38:11

Brillante, respuesta correcta para mí

Nuno Sarmento Nuno Sarmento
20 nov 2020 00:41:38

Gracias. Excelente respuesta.

return_false return_false
7 jun 2021 18:05:58
5
85

Intenta

global $post;
echo $post->ID;

o (No sé la diferencia)

global $wp_query;
echo $wp_query->post->ID;
17 sept 2014 16:58:39
Comentarios

he intentado todas las soluciones encontradas en Google pero nada funcionó

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 sept 2014 17:01:05

es difícil saber cuáles son "todas las soluciones que encontraste" :) asegúrate de que el código esté en una función, que llames a esa función y comienza a depurar con un echo de algo más antes que tenga que ser visible...

caramba caramba
17 sept 2014 17:04:55

no conseguí obtener el id usando función, y las "soluciones" son global $wp_query; $thePostID = $wp_query->post->ID;

global $post; $thePostID = $post->ID;

global $wp_query; $page = $wp_query->get_queried_object(); $page_id = $page->ID;

$page_id = get_queried_object_id();

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 sept 2014 17:09:39

el primero estaba correcto...

Muhammad Shoaib Murtaza Muhammad Shoaib Murtaza
17 sept 2014 17:39:18

Estas soluciones te darán el ID de la página solo si se utilizan antes de que comience el Loop. Una vez que el Loop comienza, $post se establecerá en cada entrada del Loop por turno.

s_ha_dum s_ha_dum
19 ago 2015 16:59:14
2

Para aquellos a quienes esto todavía no les está funcionando, necesitarán usar algún tipo de add_action (pueden elegir cuál quieren usar). En mi ejemplo, esto devolverá el ID de la página actual sin ningún problema, independientemente de si está en una carpeta de plugin, en functions.php o en otro lugar.

add_action('template_redirect', 'showid');

function showid(){
    global $wp_query;
    $theid = intval($wp_query->queried_object->ID);
    // Muestra el ID de la página actual
    echo $theid;
}

¡Buena suerte y feliz programación!

6 ago 2021 13:14:53
Comentarios

¿Por qué fue votada negativamente esta respuesta?

crs1138 crs1138
22 oct 2021 13:09:21

Estoy de acuerdo, esta es la única que funcionó para mí. Necesitaba comprobar si la página o entrada actual estaba en una categoría y forzar una redirección si lo estaba, pero hacerlo antes del bucle. Este hook de acción es lo que necesitaba para que el objeto consultado funcionara para mí.

Kai Qing Kai Qing
20 sept 2024 22:51:09
2

Fuera del bucle:

$current_page = get_page_by_path($_SERVER['REQUEST_URI']);
            
if(isset($current_page->ID)) {
    $current_page_id = $current_page->ID;
}
28 jun 2022 17:02:41
Comentarios

Parece que debería funcionar, pero creo que los otros enfoques son más simples. Y me preocupa que esto pueda realizar una solicitud a la base de datos.

Rup Rup
30 jun 2022 00:51:01

Esto no funcionará cuando se cree una nueva página.

Tahi Reu Tahi Reu
7 abr 2023 12:42:36
0

Fuera del bucle:

  //recuerda llamar a wp_reset_postdata(); después del bucle while
  // de lo contrario obtendrás un ID incorrecto.
   global $post;
   $post_id =  $post->ID;

Dentro del bucle:

while (have_posts()) {
    the_post();
    $post_id = the_ID();
}
3 mar 2022 12:45:38