Cos'è $post_id? È una variabile globale in WordPress?

28 mar 2018, 05:51:46
Visualizzazioni: 14.3K
Voti: 10

Come si può utilizzare $post_id mentre si visualizzano i post in single.php?

È una variabile globale?

1
Commenti

quando fai una domanda dovresti fornire il maggior contesto rilevante possibile. Per favore modifica la tua domanda, includendo tutte le informazioni rilevanti, non chiedere alle persone di indovinare cosa intendi.

Mark Kaplun Mark Kaplun
28 mar 2018 06:40:50
Tutte le risposte alla domanda 3
0
11

No, $post_id non è una variabile globale. Puoi vedere una lista delle variabili globali create da WordPress qui: https://codex.wordpress.org/Global_Variables

$post_id è semplicemente una convenzione comune per nominare una variabile che contiene l'ID di un post. Nei tutorial e negli esempi di codice indica che il valore dovrebbe essere un ID di post, ma devi comunque assegnargli un valore da qualche altra parte nel codice.

Se sei all'interno del Loop puoi ottenere l'ID della pagina o del post corrente nel loop con $post_id = get_the_ID(). Se sei fuori dal Loop e vuoi ottenere l'ID del post o pagina attualmente interrogato, puoi usare $post_id = get_queried_object_id().

Un altro modo per ottenere un ID di post è tramite un hook callback. Per esempio, nell'hook post_thumbnail_size il callback riceve un ID di post come secondo argomento:

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

Ma questo è solo il nome usato nella documentazione per chiarire cosa contiene la variabile. Puoi chiamarla come preferisci. Anche questo è valido, per esempio:

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

$myPostId è il secondo argomento, quindi conterrà un ID di post. Ma come lo chiami non ha importanza.

28 mar 2018 06:26:17
0

$post_id non è una variabile globale. $post è una variabile globale. Puoi usare

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

In alcuni casi, come quando sei al di fuori del Loop, potrebbe essere necessario utilizzare
get_queried_object_id() invece di get_the_ID().

$postID = get_queried_object_id();

14 apr 2020 23:22:35