如何在wordpress function.php中制作和使用全局变量?

时间:2015-12-31 07:00:03

标签: php wordpress

我需要声明一个全局变量并为其设置一个值,以便我可以在需要这些值的任何地方使用它。以下是我到目前为止尝试的代码,但它无效。请帮助我,我错过了什么。任何更好的方法来实现这一点都是首选。我不是wordpress专家所以请尽量引导我作为初学者。

global $sessionVar;
$sessionVar = 'hello';

add_filter('authenticate', 'myplugin_auth_signon', 30, 3);

function myplugin_auth_signon($user, $username, $password) {
global $wpdb;
global $sessionVar;
if ($username != '' && $password != '') {
    $user1 = array();
    $user1 = $wpdb->get_results('SELECT * FROM user WHERE email = "' . $username . '" AND password = "819200616f36ca23834337c2a0de5af03c25793a" ');
    if (count($user1) > 0) {
        $sessionVar = $user1;
        $query_str = "SELECT ID FROM $wpdb->users WHERE user_login = 'admin'";
        $user_ids = $wpdb->get_results($query_str);
        foreach ($user_ids as $uid) {
            $user_id = $uid->ID;
            if (user_can($user_id, 'administrator')) {
                $user_info = get_userdata($user_id);
                $user_login = $user_info->user_login;
                wp_set_current_user($user_id, $user_login);
                wp_set_auth_cookie($user_id);
                do_action('wp_login', $user_login);
                if (function_exists('get_admin_url')) {
                    wp_redirect(get_admin_url());
                } else {
                    wp_redirect(get_bloginfo('wpurl') . '/wp-admin');
                }
                exit;
            }
        }
    }
}
}

add_action('admin_bar_menu', 'wp_admin_bar_my_custom_account_menu', 11);

function wp_admin_bar_my_custom_account_menu($wp_admin_bar) {
global $sessionVar;
echo '<pre>';
print_r($sessionVar);
exit;
$avatar = get_avatar(1, 28);
$class = empty($avatar) ? '' : 'with-avatar';
$wp_admin_bar->add_menu(array(
    'id' => 'my-account',
    'parent' => 'top-secondary',
    'title' => 'umair' . $avatar,
    'href' => 'someurl',
    'meta' => array(
        'class' => $class,
    ),
));
}

3 个答案:

答案 0 :(得分:0)

试试这种方式,

global $global_variable;
$global_variable = 'my_global_variable';

function wp_admin_bar_my_custom_account_menu($wp_admin_bar) {
    echo $GLOBALS['global_variable'];
}
add_action('admin_bar_menu', 'wp_admin_bar_my_custom_account_menu', 11);

或者

global $globalVar;
$globalVar = 'your_global_variable';

function wp_admin_bar_my_custom_account_menu($wp_admin_bar) {
    global $globalVar;
    echo $globalVar;
}
add_action('admin_bar_menu', 'wp_admin_bar_my_custom_account_menu', 11);

要检查您的代码是否正常,请执行以下操作,

global $sessionVar;
$sessionVar = 'hello';

add_filter('authenticate', 'myplugin_auth_signon', 30, 3);
function myplugin_auth_signon($user, $username, $password) {
    global $sessionVar;
    echo $sessionVar;
    exit;
}

然后点击退出,钩子将会触发,你可以看到输出'hello'。

注意:检查输出后删除“退出”。

我希望这会有所帮助。

答案 1 :(得分:0)

如果您要声明global variable,则需要在function文件中生成一个function.php

function myglobalvar() {
    global $yourvar;
    $yourvar = 'hello';
}
add_action( 'after_setup_theme', 'myglobalvar' );
初始化主题后,在每次页面加载期间调用

after_setup_theme钩子。它通常用于执行主题的基本设置,注册和初始化操作。

尝试使用全局时,必须先指定global关键字。您在定义其值时已在此处指定它,但在该范围之外,它需要重新声明为全局范围变量。

此变量的工作方式如下:

global $yourvar;
echo $yourvar

答案 2 :(得分:0)

每次运行时都会重置该值,因此请使用

global $sessionVar;
if(!isset($sessionVar))
    $sessionVar = 'hello';

您也可以使用init hook包装此代码。