¿Qué es $post_id? ¿Es una variable global en WordPress?

28 mar 2018, 05:51:46
Vistas: 14.3K
Votos: 10

¿Cómo se puede usar $post_id al mostrar publicaciones en single.php?

¿Es una variable global?

1
Comentarios

Cuando haces una pregunta, debes proporcionar todo el contexto relevante posible. Por favor, edita tu pregunta para incluir toda la información relevante, no pidas a la gente que adivine a qué te refieres.

Mark Kaplun Mark Kaplun
28 mar 2018 06:40:50
Todas las respuestas a la pregunta 3
0
11

No, $post_id no es una variable global. Puedes ver una lista de variables globales que WordPress crea aquí: https://codex.wordpress.org/Global_Variables

$post_id es simplemente una convención común de nomenclatura para una variable que contiene un ID de entrada. En tutoriales y códigos de ejemplo, indica que se espera que el valor sea un ID de entrada, pero aún necesitas haber definido su valor en algún otro lugar del código.

Si estás dentro de El Loop, puedes obtener el ID de la página o entrada actual en el loop con $post_id = get_the_ID(). Si estás fuera del Loop y quieres obtener el ID de la entrada o página consultada actualmente, puedes usar $post_id = get_queried_object_id().

Otra forma en que podrías obtener un ID de entrada es en una devolución de llamada (callback) de un hook. Por ejemplo, en el hook post_thumbnail_size, la devolución de llamada recibe un ID de entrada como segundo argumento:

function wpse_299132_post_thumbnail_size( $size, $post_id ) {
    return $size;
}
add_filter( 'post_thumbnail_size', 'wpse_299132_post_thumbnail_size', 10, 2 );

Pero ese es solo el nombre utilizado en la documentación para dejar claro qué contiene la variable. Puedes llamarla como prefieras. Esto también es válido, por ejemplo:

function wpse_299132_post_thumbnail_size( $size, $myPostId ) {
    return $size;
}
add_filter( 'post_thumbnail_size', 'wpse_299132_post_thumbnail_size', 10, 2 );

$myPostId es el segundo argumento, por lo que contendrá un ID de entrada. Pero cómo lo llames no importa.

28 mar 2018 06:26:17
0

$post_id no es una variable global. $post sí es una variable global. Puedes usar:

global $post;
$post_id = $post->ID;
28 mar 2018 10:08:22
0

En algunos casos, como cuando estás fuera de The Loop, puede que necesites usar
get_queried_object_id() en lugar de get_the_ID().

$postID = get_queried_object_id();

14 abr 2020 23:22:35