Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wordpress function.php中创建和使用全局变量?_Php_Wordpress - Fatal编程技术网

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

如何在wordpress function.php中创建和使用全局变量?,php,wordpress,Php,Wordpress,我需要声明一个全局变量并为它设置一个值,这样我就可以在需要这些值的任何地方使用它。下面是我的代码,到目前为止,我尝试了,但它不工作。请帮我找到我缺少的东西。最好采用任何更好的方法来实现这一点。我不是wordpress专家,所以请尝试作为初学者指导我 global $sessionVar; $sessionVar = 'hello'; add_filter('authenticate', 'myplugin_auth_signon', 30, 3); function myplugin_aut

我需要声明一个全局变量并为它设置一个值,这样我就可以在需要这些值的任何地方使用它。下面是我的代码,到目前为止,我尝试了,但它不工作。请帮我找到我缺少的东西。最好采用任何更好的方法来实现这一点。我不是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,
    ),
));
}
global$sessionVar;
$sessionVar='hello';
添加过滤器('authenticate'、'myplugin\u auth\u signon',30,3);
函数myplugin\u auth\u signon($user、$username、$password){
全球$wpdb;
全球$sessionVar;
如果($username!=''&&$password!=''){
$user1=array();
$user1=$wpdb->get_results('SELECT*FROM user WHERE email=“”.$username.”和password=“819200616f36ca23834337c2a0de5af03c25793a”);
如果(计数($user1)>0){
$sessionVar=$user1;
$query\u str=“从$wpdb中选择ID->users,其中user\u login='admin';
$user\u id=$wpdb->get\u results($query\u str);
foreach($user\u id作为$uid){
$user\u id=$uid->id;
if(user\u can($user\u id,'administrator')){
$user\u info=get\u userdata($user\u id);
$user\u login=$user\u info->user\u login;
wp\u set\u当前用户($user\u id,$user\u login);
wp_set_auth_cookie($user_id);
执行操作('wp\u login',$user\u login);
如果(函数_存在('get_admin_url')){
wp_重定向(get_admin_url());
}否则{
wp_重定向(获取bloginfo('wpurl')。/wp admin');
}
出口
}
}
}
}
}
添加操作(“管理栏菜单”、“wp管理栏”我的自定义账户菜单”,11);
功能wp_admin_bar_my_custom_account_菜单($wp_admin_bar){
全球$sessionVar;
回声';
打印(sessionVar);
出口
$avatar=get_avatar(1,28);
$class=empty($avatar)?“”:“有avatar”;
$wp_管理_栏->添加_菜单(数组)(
“id”=>“我的帐户”,
“父级”=>“顶级中学”,
'title'=>'umair'.$avatar,
'href'=>'someurl',
'meta'=>数组(
“类”=>$class,
),
));
}
试试这个方法

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);

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

function myglobalvar() {
    global $yourvar;
    $yourvar = 'hello';
}
add_action( 'after_setup_theme', 'myglobalvar' );
然后单击注销,钩子将启动,您可以看到输出“hello”

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


我希望这能有所帮助。

如果您想声明
全局变量
,那么您需要在
function.php
文件中创建一个
函数

global $yourvar;
echo $yourvar
after_setup_theme
hook在每次页面加载期间,在主题初始化之后调用。它通常用于执行主题的基本设置、注册和初始化操作

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

此变量的工作方式如下:

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

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


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

我尝试了您的代码,但它总是打印我的\u全局\u变量。我如何在此函数中设置它的值:-函数myplugin\u auth\u signon($user,$username,$password),然后在需要的地方使用它。我已经更新了答案,根据您的需要进行调整。它将工作。我检查我的代码,是的,它工作正常。然后我在signon filter函数中设置全局变量值,如下所示:-$sessionVar=$user1;当我再次打印它时,它有预期的记录。但是,当我在wp_admin_bar_my_custom_account_菜单函数中打印这个全局变量时,它会再次打印“Hello”。在测试之前您是否注销并再次登录?只有当任何用户登录wordpress时,Authenticate hook才会运行。是的,我确实注销并再次登录以进行测试。
global $yourvar;
echo $yourvar
global $sessionVar;
if(!isset($sessionVar))
    $sessionVar = 'hello';