$ GLOBALS Array für WordPress

9

Gibt es eine Datei, in der WordPress definiert $GLOBALS?

Ich bin nur neugierig, wofür WordPress es verwendet und zu welchem ​​Zweck.

Das ist alles!

Chrisjlee
quelle

Antworten:

15

Ich bin mir nicht sicher, ob dies alles WordPress-Globals sind, aber ich habe eine schnelle Grep-Typ-Suche in den WordPress-Dateien durchgeführt und versucht, alle Globals zu extrahieren, die ich konnte.

Dies ist die Liste, die ich zusammengestellt habe. Es mag nicht perfekt sein, sollte aber * hoffentlich * viele der von $GLOBALSWordPress verwendeten Schlüssel darstellen. Es berücksichtigt keine globalisierten Variablen, die nicht explizit als definiert sind $GLOBAL, aber dennoch einen globalen Geltungsbereich haben.

$GLOBALS['_menu_item_sort_prop']
$GLOBALS['_wp_sidebars_widgets']
$GLOBALS['blog_id']
$GLOBALS['body_id']
$GLOBALS['comment']
$GLOBALS['comment_depth']
$GLOBALS['content_width']
$GLOBALS['current_site']
$GLOBALS['current_user']
$GLOBALS['custom_background']
$GLOBALS['custom_image_header']
$GLOBALS['debug_bar']
$GLOBALS['editor_styles']
$GLOBALS['is_winIE']
$GLOBALS['link']
$GLOBALS['login_grace_period']
$GLOBALS['month']
$GLOBALS['month_abbrev']
$GLOBALS['more']
$GLOBALS['post']
$GLOBALS['post_type']
$GLOBALS['posts']
$GLOBALS['query_string']
$GLOBALS['request']
$GLOBALS['single']
$GLOBALS['submenu']
$GLOBALS['tab']
$GLOBALS['type']
$GLOBALS['weekday']
$GLOBALS['weekday_abbrev']
$GLOBALS['weekday_initial']
$GLOBALS['wp_admin_bar']
$GLOBALS['wp_filter']
$GLOBALS['wp_object_cache']
$GLOBALS['wp_post_types']
$GLOBALS['wp_query']
$GLOBALS['wp_styles']
$GLOBALS['wp_taxonomies']
$GLOBALS['wp_the_query']
$GLOBALS['wp_version']

Wenn Sie eine bessere Vorstellung von allem innerhalb des globalen Arrays erhalten möchten, können Sie Folgendes ausführen, um einen Ausdruck zu erhalten, da der obige Ansatz offensichtlich fehlerhaft war, da Globale auf mehr als eine Weise definiert sind.

add_action( 'shutdown', 'print_them_globals' );

function print_them_globals() {

    ksort( $GLOBALS );
    echo '<ol>';
    echo '<li>'. implode( '</li><li>', array_keys( $GLOBALS ) ) . '</li>';
    echo '</ol>';
}

Dies sollte Ihnen eine umfassendere Liste von Variablen im globalen Bereich geben.

Hoffe das ist hilfreich. :) :)

t31os
quelle
++++++ wp_filesystem, wp_rewrite, wp_registered_widgets, wp_registered_sidebars, wpdb, current_screen, pagenow, is_IE, is_gecko, is_opera, is_iphone etc ..., authordata, wp_roles, wp_scripts, _wp__ Code ist Poesie :)
onetrickpony
Sicher, es gibt viel mehr als nur einen globalen Bereich, aber sie sind nicht auf die gleiche Weise definiert, so dass es unmöglich ist, mein Regex-Muster zu berücksichtigen.
t31os
3
Meine Antwort wurde um eine Funktion erweitert, die eine umfassendere Liste der globalen Elemente enthält ... :)
t31os
5

Unglücklicherweise nicht.

Globale Definitionen sind über die Codebasis verteilt.

Für die meisten gibt es auch keine Dokumentation.

Scribu
quelle
Ich denke, es sollte auch beachtet werden, dass, wenn Sie eine beliebige Variable im globalen Bereich deklarieren, diese automatisch zum $ GLOBALS-Array hinzugefügt wird, ohne jemals etwas einzugeben $GLOBALS[, sodass eine grep-Suche möglicherweise nicht jede globale Variable in WordPress zurückgeben würde.
Stevendesu
@steven_desu: Ich denke, du wolltest das in die Antwort von t31os posten.
Scribu
Es war kein grep, technisch gesehen war es eine Regex-Musterübereinstimmung über alle Dateien im WordPress-Installationsverzeichnis mit Notepad ++, meine Suche verlief nach dem Vorbild $GLOBALS([^, ]+)([, ]+)... was mir ein Bündel von Ergebnissen gab, die ich dann kopierte und einfügte, und alle irrelevanten Daten entfernt.
t31os
1

$GLOBALSist ein assoziatives Array, das Verweise auf alle Variablen enthält, die derzeit im globalen Bereich definiert sind. Dies ist ein PHP-Sprachwerkzeug.

Globale Variablen können einfach definiert werden, indem ein neues Element im $GLOBALSArray wie folgt erstellt wird:

$GLOBALS['foo'] = 'foo content';

WordPress Globals werden verwendet, um Daten zwischen Dateien auszutauschen. Sie sind nicht an einem bestimmten Ort definiert, aber einige der wichtigsten finden Sie hier: http://codex.wordpress.org/Global_Variables

PHP macht die Verwendung noch einfacher, da $GLOBALSSie auf die Elemente zugreifen können, indem Sie sie einfach mit dem globalSchlüsselwort deklarieren.

global $foo;
$foo = 'foo new content';

ist das gleiche wie:

$GLOBALS['foo'] = 'foo new content';

Wenn Sie nicht $fooals global definiert haben , wird es nicht mit dem globalen Variablenbereich verknüpft.

Lesen Sie dazu weiter: http://www.php.net/manual/en/reserved.variables.globals.php

Dwainm
quelle