通过wp_mail()调用时,WordPress在代码中执行URL

时间:2018-03-26 作者:Aidan Knight

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

不幸的是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 );

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

请尝试以下方法,我认为从site_url() 函数可能会对$confirm_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 );
您可能还需要切换到魔术引号,即:

$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 );
双引号中变量周围的括号不是必需的,但一些开发人员发现它们更容易在长字符串中读取。

结束