it-swarm.com.de

Ein globales Array in functions.php definieren?

Ich versuche eine Reihe von Jahren zu erstellen, die in meinen Template-Dateien und in mindestens einer anderen Funktion in der functions.php verfügbar sind.

function get_the_years() 
{
    global $year_arr = range(2001, date('Y'));
    return $year_arr;
}

Dann möchte ich es in einer Funktion verwenden, die einen Begriff für jedes Jahr in der benutzerdefinierten Taxonomie "Jahr" erstellt.

function create_year_terms() {
foreach($year_arr as $value){   
    $term = term_exists($value, 'year');
        if ($term !== 0 && $term !== null) {
            echo $value . ' category exists!';
        }
        else { wp_insert_term(
            $value, // the term 
            'year', // the taxonomy
            array(
                'description'=> 'The name of a year',
                'slug' => $value )
            );
            echo'term '. $value . ' created';
        }
    }

}

Und versuchen, diese Funktion an den Hook wp_login anzuhängen

add_action('wp_login', 'create_year_terms');

Ich habe versucht, meine Hoeworks zu machen und ich glaube, ich verstehe "etwas", aber ich habe ein bisschen Angst, etwas zu töten, indem ich falsche Dinge in meine functions.php einbaue. Entschuldigen Sie bitte meine Frage.

1
schwarzgrau

Um auf eine Variable zuzugreifen, die im Bereich global definiert ist, müssen Sie sie mit dem Schlüsselwort global referenzieren, wo immer Sie sie erneut aufrufen möchten.

In Ihrem Fall muss die Funktion create_year_terms() den global $year_arr innerhalb ihres Gültigkeitsbereichs aufrufen.

Sie können Ihre Variable auch immer im Bereich global abrufen, indem Sie das Array $GLOBALS mit dem Namen Ihrer Variablen als key verwenden.

$GLOBALS["year_arr"]

Aktualisieren

In Bezug auf Ihre Hook-Entscheidung: Zunächst ist es empfehlenswert, diese Art von Code in ein Plug-in und nicht in Ihre Theme-Funktionen einzufügen. Zweitens haken Sie es an init; oder registriere einen Aktivierungshook für dein Plugin und verwende dann vielleicht wp_schedule_event mit einem benutzerdefinierten Intervall von einem Jahr.

… Aber ist das wirklich nötig?

2
Sunyatasattva

Zunächst müssen Sie eine globale Variable in dem Bereich definieren, auf die Sie zugreifen möchten, dh außerhalb Ihrer Funktionen (und möglicherweise sogar außerhalb der Klasse - falls Sie eine haben).

Zweitens müssen Sie, soweit ich weiß, zuerst eine Variable global 'rendern' und dann in einer neuen Zeile ihren Wert setzen:

global $myvar;
$myvar = "whatever";

Innerhalb der Funktionen müssen Sie die Variable erneut als global angeben, bevor Sie sie verwenden. Andernfalls wäre es nur eine lokale Variable mit demselben Namen wie die globale (aber noch nicht bekannte) Variable von außen.

Und was genau wollen Sie mit der Funktion machen? Kennen Sie den Haken?

wp_login ist veraltet - verwenden Sie wp_signon. Aber ich verstehe nicht, wozu Sie bereit sind ...

1
tfrommen