As per author's update notes,
if you are a developer of add-on plugins for Contact Form 7 or you have customized Contact Form 7 from your theme’s functions.php file, you may need to modify your code to make it workable with Contact Form 7 3.9.Here what I do to save new posts / custom post types using the new methods:
New way of saving data before it gets sent as email.
Before, we use the $objval function parameter to get CF7 id and post data
/**
* CAPTURE CF7, DO SAVE POST
**/
add_action('wpcf7_before_send_mail', 'do_post_submit_pre_mail_php');
function do_post_submit_pre_mail_php($objval) {
save_post($objval->posted_data, $objval->posted_data['_wpcf7']);
return;
}
Now this is the important part, we should now change this to:
/**
* CAPTURE CF7, DO SAVE POST
**/
add_action('wpcf7_before_send_mail', 'do_post_submit_pre_mail_php');
function do_post_submit_pre_mail_php($objval) {
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$posted_data = $submission->get_posted_data();
$cf7id = $objval->id();
}
save_post($posted_data, $cf7id);
return;
}
Create the save_post function and use the cf7 id to make conditional statements, and the posted data to use as content data.
/**
* CAPTURE SAVE POST OF CF7, GET THE VALUES AND SAVE IT AS NEW POST
* content type may depend on form submitted.
**/
function save_post($values, $cf7id){
//build array for wp_insert_post
switch($cf7id){
default:
$post_title = '';
$post_type = '';
$post_content = '';
$post_status = '';
$post_author = 1;// 1 = admin
$customfields = array(
'customfieldname' => $values['contact_form_field_name'];
);
break;
}
$vals = array(
'post_title' => $post_title,
'post_status' => 'publish',
'post_content' => $post_content,
'post_author' => 1,
'post_type' => $post_type
);
//you can make the below conditional eg. enclose with if($cf7id == 'THEID'){}
$postid = wp_insert_post($vals);
if($postid != ""){
if(is_array($customfields)){
foreach($customfields as $fkey => $fval){
updatepostmeta($postid, $fkey, $fval);
}
}
}
}
No comments:
Post a Comment