【问题标题】:Assign Wordpress Short code to PHP Variable?将 Wordpress 短代码分配给 PHP 变量?
【发布时间】:2013-03-08 05:31:00
【问题描述】:

我正在尝试将 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,我敢肯定它们是完全相同的字符串!

【问题讨论】:

  • var_dump(strcmp($var, $var2)); 的输出是什么?同时使用 var_dump 检查单个字符串。
  • @Rikesh 当我转储 vars 时,一个说 string(48),另一个说 string(18),这是什么意思?
  • 您的do_shortcode 似乎没有按预期工作。
  • @WilliamL.:短代码返回类似这样的内容:<span class="userinfo">test@example.com</span>(使用var_dump,你会看到)。
  • @vstm 你说得对,它确实表明了这一点!有没有办法只获取电子邮件地址?

标签: php wordpress shortcode


【解决方案1】:

默认情况下,userinfo 短代码返回包装在 <span> 标记中的数据。要抑制跨度标记,您可以使用nospan-attribute。

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);

【讨论】:

    【解决方案2】:

    您不应为此使用简码,而应仅使用 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 作为字符串设置为当前用户的电子邮件地址。

    【讨论】:

      【解决方案3】:

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

      $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,看看那里是否有任何意外值。

      【讨论】:

      • 当我转储 vars 一个说 string(48) 而另一个说 string(18) 时,这是否意味着我需要修剪字符串?
      • 是的,这意味着字符串不相等,简单的回显有什么建议?他们看起来平等吗?有什么意想不到的人物吗?
      • 回显只显示字符串(48)后跟电子邮件地址和字符串(18)后跟相同的电子邮件地址,完全相同。
      • 也查看源代码而不是在浏览器中查看。可能会有隐藏的 HTML 标签。
      猜你喜欢
      • 2014-08-27
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      • 2022-01-13
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多