Definirea unui array global în functions.php
Încerc să creez un array de ani, care să fie disponibil în fișierele mele template și în cel puțin o altă funcție din functions.php.
function get_the_years()
{
global $year_arr = range(2001, date('Y')); // creează un array de la 2001 până la anul curent
return $year_arr;
}
Apoi vreau să îl folosesc într-o funcție care creează un termen pentru fiecare an în taxonomia personalizată 'year'.
function create_year_terms() {
foreach($year_arr as $value){
$term = term_exists($value, 'year');
if ($term !== 0 && $term !== null) {
echo $value . ' categoria există!'; // afișează dacă categoria există deja
}
else { wp_insert_term(
$value, // termenul
'year', // taxonomia
array(
'description'=> 'Numele unui an',
'slug' => $value )
);
echo 'termenul '. $value . ' a fost creat'; // afișează când se creează un termen nou
}
}
}
Și încerc să atașez această funcție la hook-ul wp_login
add_action('wp_login', 'create_year_terms');
Am încercat să-mi fac temele și cred că "înțeleg ceva" dar sunt puțin speriat să nu stric ceva punând lucruri greșite în functions.php, așa că vă rog să-mi scuzați întrebarea.
Pentru a accesa o variabilă definită în scopul global
, trebuie să o referențezi folosind cuvântul cheie global
oriunde dorești să o apelezi din nou.
În cazul tău, funcția create_year_terms()
trebuie să apeleze global $year_arr
în cadrul scopului său.
De asemenea, poți obține întotdeauna variabila ta din scopul global
folosind array-ul $GLOBALS
cu numele variabilei tale ca key
, astfel:
$GLOBALS["year_arr"]
Actualizare
Referitor la decizia ta legată de hook: În primul rând, este o practică recomandată să plasezi acest tip de cod într-un plugin și nu în funcțiile temei. În al doilea rând, conectează-l la init
; sau înregistrează un activation hook pentru pluginul tău și apoi poți folosi wp_schedule_event cu un interval personalizat de un an.
…dar din nou, este asta cu adevărat necesar?

wp_schedule_event este un sfat foarte bun. Din păcate, cred că este necesar. Am creat un site web pentru departamentul de film al colegiului meu. Și atâta timp cât încă studiez, voi administra site-ul, dar ar trebui să funcționeze chiar dacă altcineva va avea grijă de el.

În primul rând, trebuie să definești o variabilă globală în domeniul de aplicare în care dorești să ai acces la ea, adică în afara funcțiilor tale (și poate chiar în afara clasei - dacă ai una).
În al doilea rând, din câte știu, trebuie mai întâi să 'declari' o variabilă ca globală, iar apoi, pe o linie nouă, să-i setezi valoarea:
global $myvar;
$myvar = "whatever";
În interiorul funcțiilor, trebuie să declari din nou variabila ca globală înainte de a o folosi. Altfel, ar fi doar o variabilă locală cu același nume ca variabila globală (dar încă necunoscută) din 'exterior'.
Și exact ce anume dorești să faci cu funcția? Ești familiarizat cu hook-urile?
wp_login
este depreciat - folosește wp_signon
. Dar nu înțeleg exact ce încerci să realizezi...

mulțumesc pentru clarificarea privind utilizarea lui global. Funcția ar trebui să verifice dacă există deja un termen personalizat cu anul curent, iar dacă nu, să creeze unul. Am ales wp_login, pentru că din câte știu eu, nu există un hook care să fie executat în fiecare 1 ianuarie sau altceva pe care l-aș putea folosi.
