Come impostare una variabile globale in functions.php
Voglio poter visualizzare l'URL dell'immagine in evidenza di un post e dopo alcune ricerche sul web ho trovato il seguente codice che funziona correttamente quando lo inserisco in un loop nel template della mia pagina principale.
<?php $thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0']; ?>
<?php echo $urlSmall; ?>
Tuttavia, voglio utilizzare la variabile $urlSmall in altri luoghi oltre al template della pagina principale, ed è qui che le mie limitate capacità di programmazione mi mettono in difficoltà. Ho provato semplicemente a copiare e incollare
wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0'];
nel mio functions.php ma non ha funzionato. Ho bisogno che queste variabili siano riconosciute globalmente. Cosa devo fare qui? Scrivere qualche tipo di funzione?
Puoi trasformare il tuo snippet in una funzione che restituisce l'URL della miniatura di un articolo:
function wpse81577_get_small_thumb_url( $post_id ) {
$thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'small' );
return $thumbSmall['0'];
}
Utilizzo, fornendo l'ID di un articolo:
<?php echo wpse81577_get_small_thumb_url( 59 ); ?>

Fantastico, ma come ottengo dinamicamente l'ID del post in <?php echo wpse81577_get_small_thumb_url( 59 ); ?>, vorrei usarlo in un loop?

Domanda strettamente relativa al PHP.
global $urlSmall;
$urlSmall = $thumbSmall['0'];
Se dichiari la variabile con la parola chiave global
quando la inizializzi, sarà disponibile da quel momento in poi. Puoi "importarla", per così dire, con...
global $urlSmall;
var_dump($urlSmall);
Puoi ottenere lo stesso risultato assegnando direttamente chiavi/valori all'array $GLOBALS
.
$GLOBALS['urlSmall'] = $thumbSmall['0'];
Sembra essere la risposta più diretta alla domanda:
Ho bisogno che queste variabili siano riconosciute globalmente. Cosa devo fare qui?
Tuttavia, potrebbero esserci modi migliori per gestire i dati.

Sembra funzionare per me! Ma s_ha_dum, come potrei ottenere qualcosa di simile senza usare variabili globali?

Scusate, mi sono affrettato, non ha risolto il mio problema. Quando seguo i tuoi suggerimenti e inserisco global $urlSmall; var_dump($urlSmall); nel template della pagina frontale, stampa semplicemente NULL sulla pagina.

Se vuoi che le tue variabili siano accessibili globalmente, devi usare variabili globali. Un'altra opzione è creare una funzione come suggerito in un'altra risposta. Non so perché non riesci a farlo funzionare. Funziona. Devi assicurarti che il file dove è definita la variabile venga eseguito prima di provare a usare la variabile, forse è quello il problema.
