Come impostare una variabile globale in functions.php

15 gen 2013, 01:02:27
Visualizzazioni: 46.4K
Voti: 5

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?

2
Commenti

Questa è più una domanda su PHP che su WordPress, secondo me

shea shea
15 gen 2013 07:20:45

Nel senso che...

Josef Ulander Josef Ulander
15 gen 2013 20:49:49
Tutte le risposte alla domanda 2
2

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 ); ?>
15 gen 2013 02:16:18
Commenti

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

Josef Ulander Josef Ulander
15 gen 2013 20:39:26

ad esempio wpse81577_get_small_thumb_url( $post->ID );, wpse81577_get_small_thumb_url( get_the_ID() );, ...

diggy diggy
15 gen 2013 20:54:20
3

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.

15 gen 2013 02:18:26
Commenti

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

Josef Ulander Josef Ulander
15 gen 2013 20:41:02

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.

Josef Ulander Josef Ulander
15 gen 2013 20:48:50

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.

s_ha_dum s_ha_dum
15 gen 2013 21:34:43