为了记录在案,以防以后有人看到这一点,原始代码存在一些问题。第一个是这一行:
do_action(\'my_phpmailer_example\');
do\\u action()需要操作/挂钩的名称,并将执行与该挂钩关联的所有函数。在您的行中,您使用定义的函数名而不是操作名来调用它。通常您不必使用do\\u action()。WordPress本身会在适当的时间调用“phpmailer\\u init”操作。在本例中,您使用了试图调用的函数的名称。所以你告诉WP要做的就是寻找一个名为“my\\u phpmailer\\u example”的钩子,并执行添加到其中的所有操作。这就是为什么在提交表单时,您的行什么都没做。
第二,您正在组合两个不同的任务。您希望从与“phpmailer\\u init”挂钩关联的函数中删除发送代码。这只用于初始化phpmailer-设置服务器和值,诸如此类的事情。每次WordPress准备发送电子邮件时,都会执行“phpmailer\\u init”操作。而且你不希望你的插件在WordPress刚刚启动时发送电子邮件。所以,把WordPress从我的\\u phpmailer\\u example()中发出的所有电子邮件都不适用的东西都拿出来。
第三,您需要的是wp\\u邮件功能。看起来像这样:
if ( isset( $_POST[\'submit\'] ) ) {
$to = \'[email protected]\';
$subject = \'The subject\';
$body = \'The email body content\';
$headers = array(\'Content-Type: text/html; charset=UTF-8\');
wp_mail( $to, $subject, $body, $headers );
}
但你会使用你的表格提交。您可以在此处阅读该函数:
https://developer.wordpress.org/reference/functions/wp_mail/第四,您需要在表单中构建安全机制,否则每个人及其叔叔都会使用它发送垃圾邮件。如果要允许html电子邮件,请查看如何在WordPress表单和current\\u user\\u can()上使用nonce,以及如何正确过滤用户提供的内容。
这些话题应该能让任何人朝着正确的方向看这个问题。
大家干杯!