我需要声明一个全局变量并为其设置一个值,以便我可以在需要这些值的任何地方使用它。以下是我到目前为止尝试的代码,但它无效。请帮助我,我错过了什么。任何更好的方法来实现这一点都是首选。我不是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,
),
));
}
答案 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包装此代码。