1

我编写了一个自定义插件(创建自定义帖子类型)并允许任何用户从我网站上的表单提交新帖子。为了防止机器人,我设置了他们必须单击的电子邮件确认代码,这会将帖子状态从草稿更改为已发布。

不幸的是,下面显示的 wp_mail() 代码似乎正在自动执行此确认 URL。帖子一提交,就设置为草稿,直到达到此代码,然后自动发布。

但是,删除此块会使一切按预期工作。有谁知道原因以及如何解决它?

$confirm_url = site_url(). '/verification?id=' . $post_id . '&hash=' . $hash;

// Send a verification e-mail to the user to confirm publication
$subject = 'Please confirm your Slicer Profile submission';
$body = $confirm_url;
wp_mail( $profile_email, $subject, $body );
4

1 回答 1

0

这已经解决了,想为其他可能自己遇到这个问题的人分享解决方案。site_url() 存储在它自己的变量中,并且 URL 字符串中的正斜杠没有正确转义,这似乎是导致问题的原因。

现在已更新为以下内容,并且可以完美运行。

$site_url = site_url();
$confirm_url = $site_url. '\/verification?id=' . $post_id . '&hash=' . $hash;

// Send a verification e-mail to the user to confirm publication
$subject = 'Please confirm your Slicer Profile submission';
$body = $confirm_url;
wp_mail( $profile_email, $subject, $body );
于 2018-03-26T06:08:25.837 回答