尝试在联系人表单上获取管理员电子邮件时出现致命错误

时间:2013-06-29 作者:Forza

我正在构建一个contactform,需要将所有查询发送到管理员邮件地址。

处理输入数据并发送电子邮件的php文件仅包含以下代码:

<?php
$admin_email = get_option(\'admin_email\');

if($_POST["name"] != "" && $_POST["contact"] != ""  && $_POST["comments"] != "")
{
    echo "Uw bericht is verzonden! ";
    $name = $_POST["name"];
    $contactOption = $_POST["contactoption"];

    $msg = "Bericht afkomstig van: \\n";
    $msg .= "Naam: " .$name;
    $msg .= "\\nE-mail of Telefoonnummer: " .$contactOption;
    $msg .= "\\n\\n";
    $msg .= "Bericht: \\n";
    $msg .= $_POST["comments"];
    $msg .= "\\n\\n";

    $subject = utf8_decode("Bericht via Contactformulier");
    $headers = utf8_decode("From: " .$name."\\r\\n");

    mail($mailTo, $subject, utf8_decode($msg), $headers);

}
?>
问题是,我无法使用get_选项或get_bloginfo来获取管理员邮件地址。这总是返回一个致命错误。

此文件位于my childtheme文件夹中。为什么我不能使用这些函数?我还尝试将get\\u header()和get\\u footer()添加到文件中,但这些函数也无法识别。

我对wordpress比较陌生。我是不是遗漏了什么?

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

仅仅在主题文件夹中有一个文件并不意味着WordPress将加载该文件,或者当访问该文件时,将在WordPress上下文中加载该文件。

我可以想到两种方法:

为了使用WordPress功能,WordPress需要加载。最简单的方法是让WordPress加载文件。将上面的代码放在保存表单的同一模板中——可能是可以访问的,以便WordPress了解页面。只需将表单提交到同一页,而不是另一页。如果没有强有力的理由不这样做,我会这样做。

您也可以使用AJAX API 处理您的表单。

注意:在外部文件中加载WordPress有一种黑客行为,包括wp-load.php 但是,除非你对自己正在做的事情有很好的想法,否则不要搞砸了。

编辑:

基于其他信息,我现在认为更好的解决方案是为表单创建适当的小部件。

class Form_Widget_wpse_104728 extends WP_Widget {
  function __construct() {
    $opts = array(
      \'description\' => \'Display and Process My Form\'
    );
    parent::WP_Widget(
      \'my-form-content\',
      \'Some PHP\',
      $opts
    );
  }
  function widget($args,$instance) {
    // PHP goes here
    // Your code to process the form
    // Your form itself
  }
}
function register_my_widgets() {
  register_widget(\'Form_Widget_wpse_104728\');
}
add_action(\'widgets_init\',\'register_my_widgets\');
更好的做法是将整个内容放入插件中,以便您可以在页面加载的早期在挂钩上独立处理表单。

SO网友:Lucas Bustamante

要获取WordPress管理电子邮件,只需执行以下操作:

$admin_email = get_option(\'admin_email\');

结束

相关推荐

qTranslate in functions.php

我有一个将用户重定向到特定页面的功能:wp_redirect(\'http://address/page\'); 通常我只会使用:<?php _e(\"<!--:en-->english permalink<!--:--><!--:de-->german permalink<!--:-->\"); ?> 但这是特定的情况,我不能这样使用它。。。你知道怎么做吗?谢谢