Ottenere variabile PHP da functions.php e stamparla nei file template del tema

4 mag 2012, 18:46:00
Visualizzazioni: 51.4K
Voti: 9

Questa potrebbe sembrare una domanda sciocca ma non riesco a capire come fare.

Ho creato una variabile nel mio functions.php - e sto cercando di stamparla nei miei file template.

Immagino sia un problema di scope.

Qual è il modo più semplice per stampare una variabile o creare una funzione che mi permetta di visualizzare questo ID Facebook in vari file template.

Questo è quello che ho attualmente nel mio functions.php...

$fb_app_id = '68366786876786';

E questo è come stavo cercando di stamparla...

<?php echo $fb_app_id; ?>


Qualsiasi suggerimento sarebbe di grande aiuto, grazie mille


2
Commenti

Chiuso come fuori tema. Questa è una domanda relativa a programmazione/PHP, non una domanda su WordPress.

Chip Bennett Chip Bennett
4 mag 2012 18:53:09

Usa global $your_var; echo $your_var; oppure echo $GLOBALS['your_var'];.

kaiser kaiser
4 mag 2012 19:33:38
Tutte le risposte alla domanda 3
1
18

Se non hai accesso al valore, è probabile che sia un problema di scope. Assicurati prima di globalizzarlo:

<?php
global $fb_app_id;
echo $fb_app_id;
?>

Alternativa

Non sono un fan delle variabili globali, quindi l'alternativa che consiglio è utilizzare il meccanismo dei filtri integrato in WordPress. Aggiungi il filtro nel tuo file functions.php e applicalo dove necessario.

In functions.php:

add_filter( 'fb_app_id', 'return_fb_app_id' );
function return_fb_app_id( $arg = '' ) {
    return '68366786876786';
}

Nei tuoi file template:

echo apply_filters( 'fb_app_id', '' );

Oppure usa un action hook

In functions.php

add_action( 'fb_app_id', 'echo_fb_app_id' );
function echo_fb_app_id() {
    echo '68366786876786';
}

Nei tuoi file template:

do_action( 'fb_app_id' );

Sia che tu usi un action hook o un filtro dipende interamente da te. Consiglio un filtro perché può restituire un valore. Questo è molto più flessibile che semplicemente inserire chiamate echo nel tuo template.

4 mag 2012 18:59:05
Commenti

Voto a favore del metodo basato sui filtri. Molto più pulito.

Rutwick Gangurde Rutwick Gangurde
3 mar 2016 11:01:57
3

il modo più semplice sarebbe creare una funzione richiamabile, in questo caso non hai veramente bisogno di un hook

function get_fb_app_id() {
    $fb_app_id = '68366786876786';
    return $fb_app_id;
}

e nel template:

echo get_fb_app_id();
4 mag 2012 19:01:14
Commenti

Una funzione wrapper per restituire una variabile globale??

kaiser kaiser
4 mag 2012 19:33:54

no, non la imposterei come globale, ecco perché non ho aggiunto la riga global.

fischi fischi
5 mag 2012 17:10:04

Ok. Quindi perché non è all'interno della function? Attualmente la funzione genererebbe solo un Error: undefined (...).

kaiser kaiser
6 mag 2012 18:09:45
0

In questo caso utilizzerei le opzioni di WordPress. Puoi impostare un'opzione utilizzando add_option() o update_option() (probabilmente la scelta migliore per il tuo caso). Dovresti usare update_option('fb_app_id', '68366786876786'); da qualche parte nel tuo file functions.php (la funzione dell'hook init sarebbe probabilmente un buon posto).

Potresti quindi mostrare questa opzione nei file del tuo tema utilizzando echo get_option('fb_app_id');

Il motivo per cui suggerirei questo approccio, piuttosto che usare variabili globali (brutto) o hook di azione/filtro, è che se prevedi di rilasciare il tuo tema al pubblico, sarà molto più semplice rendere fb_app_id un'opzione modificabile in una pagina delle opzioni del tema.

4 mag 2012 19:44:47