从联系人表单7提交创建WordPress帖子



快速警告,我不擅长php编码,保持尽可能简单:)。

我正在寻找一个解决方案,客人可以在Contact form 7表单中书写,当他们提交时,根据他们输入的信息自动创建WordPress帖子。

我创建了这个代码,但是我不能找出问题,因为没有创建任何帖子。

function save_cf7_data_to_cpt($contact_form)
{
if ($contact_form->id(11247) !== $my_form_id) return;
$submission = WPCF7_Submission::get_instance();
if ($submission)
{
$posted_data = $submission->get_posted_data();
}
$args = array(
'post_type' => 'post',
'post_status' => 'draft',
'post_category' => array(91),
'post_title' => $posted_data['text-410'],
'post_content' => $posted_data['textarea-420'],
'post_date' => $posted_data['date'],
);
$post_id = wp_insert_post($args);
}
add_filter('wpcf7_before_send_mail', 'save_cf7_data_to_cpt');

当我提交我的信息时,我收到了联系表单7的常规确认信息,但没有发布。

$my_form_id在你的函数中是未定义的,你可以使用wpcf7_mail_sent钩子来获取发布的数据并将该数据添加到你的帖子中。

试试这段代码。

add_action( 'wpcf7_mail_sent',
function( $contact_form) {

$my_form_id = 711; //form id for post data
if ($contact_form->id() != $my_form_id) return;
$submission = WPCF7_Submission::get_instance();  
if ( $submission ) {
$posted_data = $submission->get_posted_data();
}   

$args = array(
'post_type' => 'post',
'post_status' => 'draft',
'post_category' => array(91),
'post_title' => $posted_data['text-410'],
'post_content' => $posted_data['textarea-420'],
'post_date' => $posted_data['date'],
);
$post_id = wp_insert_post($args);

// Do some productive things here
},
10
);

相关内容

  • 没有找到相关文章