快速警告,我不擅长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
);