组合wp_Current_User()和一个变量

时间:2014-05-22 作者:Nathan

我想将用户配置文件中的自定义字段与用户可能发表的特定帖子相匹配。因此,我为用户配置文件设置了自定义字段,它们都是数字。然后,如果我在帖子页面上,我想检查该帖子的ID是否与他们的个人资料中的自定义字段匹配。类似这样的情况,其中用户配置文件中的自定义字段是badge-id-2000

$current_user = wp_get_current_user();
$badge_ID = $post->ID;
if ($badge_ID == $current_user->badge-id-$badge_ID) {
    return true;
}
显然在我使用的3号线上badge-id-$badge_ID, 该变量在该场景中不起作用。是否有其他方法来执行此操作或使变量在那里工作?

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

您所遇到的大多数只是PHP错误。

首先,破折号在变量名中不是有效字符,因此在这方面会遇到问题--badge-id-$badge_ID-- 不管怎样。您应该改为使用下划线。

其次,您需要事先构造整个对象变量字符串,而不是在使用时尝试构造它。

例如

$badge_ID = $post->ID;
$badge_str = "badge_id_{$badge_ID}";
if ($badge_ID == $current_user->$badge_str) {
  echo \'Yay\';
}
第三,我很确定您的数据结构比需要的更复杂。你必须有一个奇怪的结构badge_id_* 喜欢$current_user->badge_id_123 = 123; 使用众多不同的badge ID对象变量名$current_user->badge_id = 123. 如果您这样做了,您可以简单地做到:

$badge_ID = $post->ID;
if ($badge_ID == $current_user->badge_id) {
  echo \'Yay\';
}

结束

相关推荐

qTranslate in functions.php

我有一个将用户重定向到特定页面的功能:wp_redirect(\'http://address/page\'); 通常我只会使用:<?php _e(\"<!--:en-->english permalink<!--:--><!--:de-->german permalink<!--:-->\"); ?> 但这是特定的情况,我不能这样使用它。。。你知道怎么做吗?谢谢