在WordPress站点中传递变量的最佳方式是什么?

时间:2017-05-21 作者:dtx

我现在正在用一个会员插件建立一个会员网站。不同类型的成员身份与ID相关联,我必须经常这样做:“如果ID是4122(即用户是组X的成员),则显示此项,否则隐藏”。

为此,我不断查找各个级别的ID,我才意识到这是非常低效的。

为了解决这个问题,我尝试在functions.php, i、 e。$gold_member = 4122;.

我是一个php初学者,尝试通过global $gold_member;. 但这并没有奏效,我也在某处读到,使用globals被认为是不好的形式。

有没有解决这个问题的标准方法?基本上,我所追求的是与SASS中使用变量的方式非常相似的东西。我想定义它们一次,然后在中使用它们functions.php 在模板中。

1 个回复
SO网友:Cedon

可以使用函数执行此操作wp_get_current_user(). 此函数将获取WP_User 班它可以存储在全局变量中:

global $current_user;
$current_user = wp_get_current_user();
$current_user 然后将成为an array 匹配的属性WP_User 对于当前登录的用户。如果没有用户登录,则只需返回一个包含ID 值为的0.

然后,您可以执行以下操作:

if ( 0 == $current_user->ID ) {
  // Code for No User Logged In
} elseif ( 4122 = $current_user->ID ) {
  // Code for $gold_member
} else {
  // Code for everyone else
}
尽管如此,正如Rup在他的评论中所指出的,WP用户角色是一种更有效的确定ID的方法$current_user 是多维数组,您需要write a function 返回truefalse 测试以查看该值是否存在,或将其拉出,然后创建第二个变量并进行测试:

$current_user_roles = $current_user->roles;
if ( in_array( "gold_member", $current_user_roles ) ) {
  // Gold Member Code Here
} else {
  // Code for everyone else here
}
我建议您编写这个函数,因为您可以在其他地方重用它,并且它不涉及其他变量/全局变量。

结束

相关推荐

PHP variables in mysql query

关于如何使用$wpdb->insert 语法:($table, array($column=>$value),$format)?我知道这不管用:$wpdb->update(\'wp_mytable\', array(\'product\'=>\"$product\")); 这也不是:$wpdb->update(\'wp_mytable\', array(\'product\'=>$product)); 这也不是:$insert_row