如何使变量在页面请求期间可用

时间:2015-03-11 作者:henrywright

我正在尝试限制每个页面请求的数据库读取数。目前,每次get_avatar 钩火,我打电话给get_option() 返回一些数据。这个$data returned在页面请求的持续时间内不会更改,因此我有许多多余的调用get_option() 发生(因为get_avatar 在我的某些页面上多次激发)。

function my_check() {
    $data = get_option( \'blah\' );
    return $data;
}

function my_func( $avatar, $id_or_email, $size, $default, $alt ) {
    if ( my_check() ) {
        // Do something.
    }
}
add_filter( \'get_avatar\', \'my_func\', 10, 5 );
我的第一个想法是使用面向对象的PHP$data 一个类变量,但我觉得对于这个简单的场景来说,类太过了。然后我想$data 一个全局变量,但后来意识到全局变量是不好的。所以我排除了这两种方法。

还有别的办法吗$data 变量是否在页面请求的持续时间内可用?我的目标是避免多次致电get_option().

Note: 的价值$data 可能在页面请求之间更改。

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

一个类提供结构,如果它是你需要做的,那么就去做。另一种选择是全局变量,这是一种不好的做法,应该避免(并且使可靠的单元测试几乎不可能)

然而,您的整个前提是不必要的。WordPress已经将该选项存储在其缓存中,因此不会发生第二次数据库调用。

否则,答案是类或对象

结束

相关推荐

将显示名称设置为名字和姓氏(phpmyadmin SQL查询)

我正在尝试将所有用户的显示名称更改为他们的名字和姓氏。我已经研究了许多插件,并编写了自己的PHP来尝试实现这一点,但该网站有50000多名注册用户(我可以想象大多数是来自我的客户以前网站的垃圾邮件),但正因为如此,PHP挂起了,在放弃之前只有大约2000个。因此,我认为下一个最好的方法是从PHPmyAdmin中编写一个SQL语句来执行该任务,然而纯SQL让我很困惑,到目前为止,我所能做的就是将显示名设置为用户的名字,我不确定如何获得姓氏。这是我使用的语句。UPDATE wp_users, wp_userm