WordPress的 - 使变量可用于所有主题文件(没有全局变量)
我正在开发一个Wordpress主题,我试图存储我的一些变量在函数中重用它在我的主题文件中,而不写数百次同样的变量,并且没有使它们全球。我读过这是一个不好的做法。WordPress的 - 使变量可用于所有主题文件(没有全局变量)
现在我正在使用add_action
,但是没有结果。有在我functions.php
add_action('run_pms_variables', 'pms_variables_function');
function pms_variables_function ($uid) {
$the_group_uid = isset($_COOKIE["v_group_id"]) && !empty($_COOKIE["v_group_id"]) ? trim(strip_tags($_COOKIE["v_group_id"])) : "";
$session_detail = vpb_get_the_user_detail($uid);
$session_username = strlen($session_detail[0]) > 40 ? ucfirst(substr($session_detail[0],0,40)) : ucfirst($session_detail[0]);
$session_uid = $session_detail[1];
$session_email = $session_detail[2];
$session_photo = $session_detail[3];
$session_country = $session_detail[4];
//$session_usernames = explode(' ', $session_detail[0]);
$session_firstname = get_user_meta($uid,'first_name', true);
$session_lastname = get_user_meta($uid,'last_name', true);
}
,在我的文件中使用像最终:
do_action('run_pms_variables', $uid);
我的意思是,你可以称呼我为正确的方法?谢谢。
编写一个类,声明该类的全局对象,将所有变量保存为该类的属性/属性。
现在从任何地方都可以得到全局对象。
你有所有的变量存储在里面。
Uuuuhmm你正在混合苹果与桃子。 WordPress钩子,动作和过滤器是按照你想要的方式修改WordPress核心的方式,而不是在你的模板中存储任何数据的地方。
做到这一点的一种方法是简单地将值存储在WordPress安装的数据库中。要做到这一点,您需要熟悉“Nonce”功能,这是用于在WP的数据库中存储内容的安全机制。
有胡言乱语和数以千计的教程显示如何做到这一点。
如果您只想存储一些数值或短字符串,则可以使用HTML数据对象来存储一些数据,当php吐出来。
add_action('run_pms_variables', 'pms_variables_function');
function pms_variables_function ($uid) {
class GlobalVariables{
function __construct ($uid){
$this->the_group_uid = isset($_COOKIE["v_group_id"]) && !empty($_COOKIE["v_group_id"]) ? trim(strip_tags($_COOKIE["v_group_id"])) : "";
$this->session_detail = vpb_get_the_user_detail($uid);
$this->session_username = strlen($session_detail[0]) > 40 ? ucfirst(substr($session_detail[0],0,40)) : ucfirst($session_detail[0]);
$this->session_uid = $session_detail[1];
$this->session_email = $session_detail[2];
$this->session_photo = $session_detail[3];
$this->session_country = $session_detail[4];
//$session_usernames = explode(' ', $session_detail[0]);
$this->session_firstname = get_user_meta($uid,'first_name', true);
$this->session_lastname = get_user_meta($uid,'last_name', true);
}
}
return GlobalVariables($uid);
}
//and to access:
$global_variables = do_action('run_pms_variables', $uid);
echo $global_variables->the_group_uid;
作为一个侧面说明,要定义全局变量是可以在任何地方访问的变量,其他选项包括在$_SESSION
超级全局设置变量(如大多数你的变量看会话特定)的pms_variables_function
而不是内部设置类属性。
在WordPress中,'do_action()'不返回任何内容,所以这段代码无法工作。 – trysmudford
错误的方式,做动作返回值? – Mickey
我正在这样。谢谢。 – XiLab