创建用于ContactForm7提交的WordPress加载项(.XML文件导出)

时间:2018-07-09 作者:Wagner

我正在尝试为WordPress创建一个插件,用于从网站求职表中收集数据并生成一个。每个设备的XML文件。。。我正在学习php。在下面这个小代码中,我只使用了2个字段(FirstnameLastname) 但就实际情况而言,这将是更多的字段(数字和字母)

Problem Statement:

客户网站包含一个表单,用户可以在其中输入求职申请。提交表格后,人力资源部门将收到一封通知邮件,告知提交了一份新工作。

由于人力资源部门有自己的内部人力资源系统用于工作跟踪,他们需要一个解决方案,该解决方案将自动接受每个新用户提交的申请并将其转换为XML,以便内部系统导入。以下是我在互联网上找到的解决问题的方法:

<?php

 // add the action 
add_action(\'wpcf7_before_send_mail\', \'my_get_form_values\');

function my_get_form_values($contact_form) {

    // get info about the form and current submission instance
    $formTitle = $contact_form->title();
    $submission = WPCF7_Submission::get_instance();
    // define which form you\'re looking for (if you have multiple) 
    // and if the submission is valid
    if ( $formTitle == "myFormName" && $submission ) {
        // get the actual data!
        $posted_data = $submission->get_posted_data();
        $firstName = posted_data[\'firstname\'];
        $lastName = posted_data[\'lastname\'];
    }
}

function my_generate_xml($posted_data) {
    // Get a serial number from the contact form,
    // to distinguish report from others
    $serialNr = $posted_data[\'SerialNumber\'];

    // Create xml doc spec
    $xmlDoc = new DOMDocument(\'1.0\', \'UTF-8\');
    $xmlDoc->formatOutput = true;

    // Build Maximizer XML file
    $xmlRoot = $xmlDoc->createElement(\'Bug report - ticket #\' . $serialNr);
    $xmlDoc->appendChild($xmlRoot);

    // Example node for current user

    $xml_User = $xmlDoc->createElement(\'User\');

    $xml_fn = $xmlDoc->createElement(\'firstname\', $posted_data[\'firstname\']);
    $xml_User->appendChild($xml_fn);

    $xml_ln = $xmlDoc->createElement(\'lastname\', $posted_data[\'lastname\']);
    $xml_User->appendChild($xml_ln);

    $xmlRoot->appendChild($xml_User);

    // save it as a file for further processing
    $content = chunk_split(base64_encode($xmlDoc->saveXML()));
    $xmlDoc->save(\'ticket-\'.$serialNr.\'.xml\');
}

?>
我们的想法是,每次用户提交表单时,我们都会从提交的表单中提取原始数据,并生成一个XML文件。在这种情况下,文件是在哪里创建的?在WordPress安装的根目录中?此外,唯一的ID(来自序列号)将确保多个用户可以同时提交表单,而不是写入一个文件。

插件已经安装并激活,但它并没有按预期工作。

有什么线索我遗漏了什么吗?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

由于函数my_generate_xml 存在,但从未调用。

所有这些代码看起来都是正确的。唯一的问题是,您必须调用生成XML文件的函数。。。

add_action(\'wpcf7_before_send_mail\', \'my_get_form_values\');

function my_get_form_values($contact_form) {

    // get info about the form and current submission instance
    $formTitle = $contact_form->title();
    $submission = WPCF7_Submission::get_instance();
    // define which form you\'re looking for (if you have multiple) 
    // and if the submission is valid
    if ( $formTitle == "myFormName" && $submission ) {
        // get the actual data!
        $posted_data = $submission->get_posted_data();

        my_generate_xml( $posted_data );

        /* You don\'t need these two lines, so you can delete them
        $firstName = posted_data[\'firstname\'];
        $lastName = posted_data[\'lastname\'];
        */
    }
}

结束

相关推荐

需要有关wordpress和php的帮助

我的一个朋友让我对他的网站做一些小的修改(更改每页的标题,为电话号码添加一个可点击的移动链接,在页脚中添加营业时间,在导航栏中添加滚动菜单…)我对HTML和CSS很熟悉,但对Php不太熟悉。我似乎找不到每个页面的HTML文件。我读到应该是像index这样的php文件。但是,如何对这些内容进行html更正?我可以通过Bitbucket访问主题和文件,但我有点被困在这里了。谁能帮帮我吗?谢天谢地