将Wordpress短代码分配给PHP变量?

时间:2013-03-08 05:31:00

标签: php wordpress shortcode

我正在尝试将PHP变量中保存的电子邮件地址与Wordpress中的短代码中保存的电子邮件地址进行比较,这是我到目前为止所尝试的:

$email = 'someone@something.com';
$user_email = do_shortcode('[userinfo field="user_email"]');
echo var_dump(strcmp($user_email, $email) === 0);

但是var_dump总是返回false,我肯定他们是完全相同的字符串!

3 个答案:

答案 0 :(得分:2)

默认情况下,userinfo短代码会返回<span>标记中包含的数据。要取消范围标记,您可以使用nospan - 属性。

description of the plugin说明如下:

  

[userinfo nospan =“true”]应该消除周围的span标记,以便输出可以在URL或类似的应用程序中使用

所以你的代码应该是这样的:

$email = 'someone@something.com';
$user_email = do_shortcode('[userinfo field="user_email" nospan="true"]');
$var = (string) $user_email; // Casts to string
$var2 = (string) $email; // Casts to string
echo var_dump(strcmp($var, $var2) === 0);

答案 1 :(得分:1)

您不应该使用短代码,而只使用Wordpress API函数来获取当前用户的电子邮件地址:

$email = 'someone@something.com';

global $user_email;
get_currentuserinfo();

echo var_dump(strcmp($user_email, $email) === 0);

Worpdress API函数get_currentuserinfo()将全局变量$user_email设置为当前用户的电子邮件地址作为字符串。

答案 2 :(得分:0)

查看是否有任何空格以及是否需要修剪任何字符串,因为如果两个字符串相同,那么您的代码似乎已经有效。

$email = 'someone@something.com';
$user_email = 'someone@something.com';
$var = (string) $user_email; // Casts to string
$var2 = (string) $email; // Casts to string
echo var_dump(strcmp($var, $var2) === 0);

返回bool(true)

可能需要修剪do_shortcode('[userinfo field="user_email"]');。此外,您可以在比较之前简单地回显$user_email以查看是否存在任何意外值。