我正在尝试为WordPress创建一个插件,用于从网站求职表中收集数据并生成一个。每个设备的XML文件。。。我正在学习php。在下面这个小代码中,我只使用了2个字段(Firstname
和Lastname
) 但就实际情况而言,这将是更多的字段(数字和字母)
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(来自序列号)将确保多个用户可以同时提交表单,而不是写入一个文件。
插件已经安装并激活,但它并没有按预期工作。
有什么线索我遗漏了什么吗?
最合适的回答,由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\'];
*/
}
}