Cos'è $post_id? È una variabile globale in WordPress?
Come si può utilizzare $post_id
mentre si visualizzano i post in single.php?
È una variabile globale?

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.

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();
