Obținerea variabilei PHP din functions.php și afișarea acesteia în fișierele template ale temei

4 mai 2012, 18:46:00
Vizualizări: 51.4K
Voturi: 9

Aceasta poate părea o întrebare simplă, dar nu reușesc să găsesc soluția.

Am creat o variabilă în functions.php - și încerc să o afișez în fișierele mele template.

Presupun că este din cauza domeniului de vizibilitate (scope).

Care este cea mai simplă modalitate de a afișa o variabilă sau de a crea o funcție care să-mi permită să afișez acest ID de Facebook în diverse fișiere template.

Iată ce am momentan în functions.php...

$fb_app_id = '68366786876786';

Și așa încercam să o afișez...

<?php echo $fb_app_id; ?>


Orice sugestii ar fi de mare ajutor, vă mulțumesc foarte mult


2
Comentarii

Închis cu vot ca off-topic. Aceasta este o întrebare despre programare/PHP, nu despre WordPress.

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

Folosește global $your_var; echo $your_var; sau echo $GLOBALS['your_var'];.

kaiser kaiser
4 mai 2012 19:33:38
Toate răspunsurile la întrebare 3
1
18

Dacă nu aveți acces la valoare, probabil este o problemă de domeniu de vizibilitate. Asigurați-vă că o globalizați mai întâi:

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

Alternativă

Nu sunt un fan al variabilelor globale, așa că alternativa pe care o recomand este utilizarea mecanismului de filtre încorporat în WordPress. Adăugați filtrul în fișierul functions.php și aplicați-l unde este necesar.

În functions.php:

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

În fișierele de șablon:

echo apply_filters( 'fb_app_id', '' );

Sau utilizați un action hook

În functions.php

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

În fișierele de șablon:

do_action( 'fb_app_id' );

Indiferent dacă utilizați un action hook sau un filtru, depinde în întregime de dumneavoastră. Recomand un filtru deoarece poate returna o valoare. Acest lucru este mult mai flexibil decât doar injectarea apelurilor echo în șablon.

4 mai 2012 18:59:05
Comentarii

Susțin metoda bazată pe filtre. Mult mai curată.

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

cea mai ușoară metodă ar fi să creezi o funcție apelabilă, nu ai nevoie de un hook aici

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

iar în template:

echo get_fb_app_id();
4 mai 2012 19:01:14
Comentarii

O funcție wrapper pentru a returna o variabilă globală??

kaiser kaiser
4 mai 2012 19:33:54

nu, nu aș seta-o ca globală, de aceea nu am adăugat linia global.

fischi fischi
5 mai 2012 17:10:04

Ok. Deci de ce nu este în interiorul function? În starea actuală funcția ar arunca doar o Error: undefined (...).

kaiser kaiser
6 mai 2012 18:09:45
0

În acest caz, aș folosi opțiunile din Wordpress. Poți seta o opțiune folosind fie add_option() fie update_option() (probabil mai potrivit pentru cazul tău). Ai putea folosi update_option('fb_app_id', '68366786876786'); undeva în fișierul functions.php (funcția atașată la hook-ul init ar fi probabil o alegere bună).

Apoi poți afișa această opțiune în fișierele de tema folosind echo get_option('fb_app_id');

Motivul pentru care aș sugera această abordare, în loc să folosești variabile globale (pfui) sau hook-uri/filtre de acțiune, este că dacă intenționezi să lansezi tema public, va fi mult mai ușor să faci fb_app_id o opțiune editabilă într-o pagină de setări a temei.

4 mai 2012 19:44:47