$GLOBALS array for WordPress

Is there a file where WordPress defines $GLOBALS?

I’m just curious as to what WordPress uses it for and for what purpose.

Read More

That’s all!

Related posts

Leave a Reply

4 comments

  1. I’m not sure if all of these are WordPress globals, but I did a quick grep type search of the WordPress files and tried to extract all the globals I could..

    This is the list I compiled. It may not be perfect, but should *hopefully* represent a lot of the $GLOBALS keys that WordPress uses It won’t account for globalised variables that aren’t explicitly defined as $GLOBAL, but still have global scope.

    $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']
    

    If you wanted to get a better idea of everything inside the global array you could run something like the following to get a print out, because the above approach was obviously flawed since globals are defined in more than one way.

    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>';
    }
    

    That should give you a more comprehensive list of variables in the global scope.

    Hope that’s helpful. 🙂

  2. $GLOBALS is an associative array containing references to all variables which are currently defined in the global scope. This is a PHP language tool.

    Global variables can be defined simply by creating a new item in the $GLOBALS array like this:

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

    WordPress Globals are used to share data across files. They are not defined in any specific place but you can find some of the most important ones here: http://codex.wordpress.org/Global_Variables

    PHP makes it even easier to use $GLOBALS by allowing you to access the items by simply declaring it using the global keyword.

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

    is the same as:

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

    Please note, if you didn’t define $foo as global, it will not be linked to the global variable scope.

    Some further reading on this:
    http://www.php.net/manual/en/reserved.variables.globals.php

  3. If you try to print out all the $GLOBALS and get an error ‘allowed memory exceeded’ or something like that, than put this code inside 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');
    }