1

I just upgraded to WordPress 3.1.1 and suddenly I'm getting the following error:

Fatal error: Call to undefined function wp_get_current_user() in /home/arisehub/arisehub.org/wp-includes/capabilities.php on line 1028

I've narrowed it down to my usage of "current_user_can"

Example: if ( !current_user_can('manage_options') ) { add_action('admin_init','customize_page_meta_boxes'); }

Removing that reference to current_user_can removes the errors. Any ideas?

1 Answer 1

6

You are calling the function too early. The functions.php is included before current_user_can() is defined. Never do anything before the hook 'after_setup_theme':

Example for the functions.php

add_action( 'after_setup_theme', array( 'WPSE_14041_Base', 'setup' ) );

class WPSE_14041_Base
{
    public static function setup()
    {
        ! isset ( $GLOBALS['content_width'] ) and $GLOBALS['content_width'] = 480;

        add_theme_support( 'post-thumbnails', array( 'post', 'page' ) );
        add_theme_support( 'automatic-feed-links' );

        add_theme_support( 'menus' );

        add_editor_style();

        add_custom_background();

        // You may use current_user_can() here. And more. :)
    }
}
3
  • 2
    Actually the 'plugins_loaded' action is fired almost immediately after the pluggable.php file is loaded, this would be the optimal action to hook. Commented Jan 23, 2012 at 22:53
  • add_action isn't defined until after functions.php is included! Where should this code be placed? @toscho
    – bozdoz
    Commented Oct 11, 2012 at 22:41
  • @bozdoz add_action() exists already at the very bottom of the wp-config.php. That's very early even before the mu-plugins are loaded.
    – fuxia
    Commented Oct 12, 2012 at 1:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.