Definire un array globale in functions.php?
Sto cercando di creare un array di anni, che sia disponibile nei miei file template e in almeno un'altra funzione nel functions.php.
function get_the_years()
{
global $year_arr = range(2001, date('Y'));
return $year_arr;
}
Poi voglio utilizzarlo in una funzione che crea un termine per ogni anno nella tassonomia personalizzata 'year'.
function create_year_terms() {
foreach($year_arr as $value){
$term = term_exists($value, 'year');
if ($term !== 0 && $term !== null) {
echo $value . ' categoria esistente!';
}
else { wp_insert_term(
$value, // il termine
'year', // la tassonomia
array(
'description'=> 'Il nome di un anno',
'slug' => $value )
);
echo'termine '. $value . ' creato';
}
}
}
E sto cercando di collegare questa funzione all'hook wp_login
add_action('wp_login', 'create_year_terms');
Ho cercato di fare i miei compiti e penso di aver capito "qualcosa" ma sono un po' preoccupato di rompere qualcosa inserendo codice sbagliato nel mio functions.php, quindi scusate la domanda.
Per accedere a una variabile definita nello scope global
devi farvi riferimento con la parola chiave global
ovunque tu voglia richiamarla nuovamente.
Nel tuo caso, la funzione create_year_terms()
deve chiamare global $year_arr
all'interno del suo scope.
Inoltre, puoi sempre ottenere la tua variabile nello scope global
utilizzando l'array $GLOBALS
con il nome della tua variabile come key
, in questo modo:
$GLOBALS["year_arr"]
Aggiornamento
Riguardo alla tua decisione sugli hook: prima di tutto, è buona pratica inserire questo tipo di codice in un plugin piuttosto che nelle funzioni del tema. In secondo luogo, aggancialo a init
; oppure registra un activation hook per il tuo plugin e poi magari usa wp_schedule_event con un intervallo personalizzato di un anno.
...ma poi di nuovo, è davvero necessario?

wp_schedule_event è un suggerimento davvero utile. Purtroppo credo sia necessario. Ho realizzato un sito web per il dipartimento di cinema del mio college. Finché continuerò a studiare mi occuperò dell'amministrazione del sito, ma dovrebbe comunque funzionare se qualcun altro se ne prendesse cura.

Innanzitutto, devi definire una variabile globale nell'ambito dove vuoi averne accesso, cioè al di fuori delle tue funzioni (e forse anche al di fuori della classe - se ne hai una).
In secondo luogo, per quanto ne so, devi prima 'rendere' una variabile globale, e poi, in una nuova riga, impostarne il valore:
global $myvar;
$myvar = "qualunque cosa";
All'interno delle funzioni, devi dichiarare nuovamente la variabile come globale prima di usarla. Altrimenti sarebbe solo una variabile locale con lo stesso nome della variabile globale (ma ancora sconosciuta) dall' 'esterno'.
E cosa vuoi fare esattamente con la funzione? Conosci l'hook?
wp_login
è deprecato - usa wp_signon
. Ma non capisco cosa stai cercando di fare...

grazie per la chiarificazione sull'uso di global. La funzione dovrebbe verificare se esiste già un termine personalizzato con l'anno corrente, in caso contrario ne crea uno. Ho scelto wp_login, perché per quanto ne so non esiste un hook che viene eseguito ogni 1° gennaio o qualcos'altro che potrei usare.
