Array $GLOBALS en WordPress
¿Existe algún archivo donde WordPress define $GLOBALS
?
Solo tengo curiosidad por saber para qué lo usa WordPress y con qué propósito.
¡Eso es todo!

No estoy seguro si todas estas son variables globales de WordPress, pero hice una búsqueda rápida tipo grep en los archivos de WordPress e intenté extraer todas las variables globales que pude encontrar.
Esta es la lista que compilé. Puede que no sea perfecta, pero *con suerte* debería representar muchas de las claves de $GLOBALS
que WordPress utiliza. No incluirá variables globalizadas que no estén explícitamente definidas como $GLOBAL
, pero que aún tienen alcance global.
$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']
Si quisieras tener una mejor idea de todo lo que hay dentro del array global podrías ejecutar algo como lo siguiente para obtener una impresión, porque el enfoque anterior obviamente tenía fallas ya que las variables globales se definen de más de una forma.
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>';
}
Eso debería darte una lista más completa de variables en el alcance global.
Espero que sea útil. :)

++++++ 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_using_ext_object_cache.. Probablemente hay cientos más. Code is Poetry :)

Claro, hay muchos más que terminan en el ámbito global, pero no están definidos de la misma manera, por lo que es imposible incluirlos en mi patrón de regex.

Creo que también se debe mencionar que si declaras CUALQUIER variable en el ámbito global, automáticamente se agrega al array $GLOBALS sin necesidad de escribir $GLOBALS[
, por lo que una búsqueda con grep posiblemente no devolvería todas las variables globales en WordPress.

Técnicamente no era grep, sino una coincidencia de patrón regex en todos los archivos del directorio de instalación de WordPress usando Notepad++. Mi búsqueda fue algo como $GLOBALS([^, ]+)([, ]+)
... lo que me dio un montón de resultados, que luego copié y pegué, y eliminé todos los datos irrelevantes.

$GLOBALS
es un array asociativo que contiene referencias a todas las variables definidas actualmente en el ámbito global. Esta es una herramienta del lenguaje PHP.
Las variables globales pueden definirse simplemente creando un nuevo elemento en el array $GLOBALS
de esta manera:
$GLOBALS['foo'] = 'contenido foo';
Los Globales de WordPress se utilizan para compartir datos entre archivos. No están definidos en un lugar específico, pero puedes encontrar algunos de los más importantes aquí: http://codex.wordpress.org/Global_Variables
PHP facilita aún más el uso de $GLOBALS
permitiéndote acceder a los elementos simplemente declarándolos con la palabra clave global
.
global $foo;
$foo = 'nuevo contenido foo';
es lo mismo que:
$GLOBALS['foo'] = 'nuevo contenido foo';
Ten en cuenta que si no defines $foo
como global, no estará vinculado al ámbito de variables globales.
Algunas lecturas adicionales sobre esto: http://www.php.net/manual/en/reserved.variables.globals.php

Si intentas imprimir todos los $GLOBALS
y recibes un error como 'memoria permitida excedida' o algo similar, entonces coloca este código dentro de functions.php:
if(!function_exists("print_all_globals")){
function print_all_globals() {
$test = array_keys($GLOBALS);
echo "<pre style='background:blue;color:white;'>";
print_r($test);
echo "</pre>";
exit;
}
add_action('wp_enqueue_scripts','print_all_globals');
}
