cf_custom_fields_capture_entry
Process entry and save as post/ post meta.
Description
Returns (array)
Parameters (2)
- 0. $config (array)
- Processor config.
- 1. $form (array)
- From config.
Usage
if ( !function_exists( 'cf_custom_fields_capture_entry' ) ) { require_once ABSPATH . PLUGINDIR . 'caldera-custom-fields/includes/to-post-type.php'; } // Processor config. $config = array(); // From config. $form = array(); // NOTICE! Understand what this does before running. $result = cf_custom_fields_capture_entry($config, $form);
Defined (2)
The function is defined in the following location(s).
- /includes/to-post-type.php
- function cf_custom_fields_capture_entry($config, $form) {
- $user_id = get_current_user_id();
- if( !empty( $config['post_author'] ) ) {
- $user_id = Caldera_Forms::do_magic_tags( $config['post_author'] );
- }
- $entry = array(
- 'post_title' => Caldera_Forms::get_field_data( $config['post_title'], $form ),
- 'post_status' => Caldera_Forms::do_magic_tags( $config['post_status'] ),
- 'post_type' => $config['post_type'],
- 'post_content' => Caldera_Forms::get_field_data( $config['post_content'], $form ),
- 'post_parent' => Caldera_Forms::do_magic_tags( $config['post_parent'] ),
- 'to_ping' => Caldera_Forms::do_magic_tags( $config['to_ping'] ),
- 'post_password' => Caldera_Forms::do_magic_tags( $config['post_password'] ),
- 'post_excerpt' => Caldera_Forms::do_magic_tags( $config['post_excerpt'] ),
- 'comment_status'=> $config['comment_status'],
- );
- if( empty( $entry[ 'post_content' ] ) ) {
- $entry[ 'post_content' ] = '';
- }
- // set the ID
- if( !empty( $config['ID'] ) ) {
- $is_post_id = Caldera_Forms::do_magic_tags( $config['ID'] );
- $post = get_post( $is_post_id );
- if( !empty( $post ) && $post->post_type == $entry['post_type'] ) {
- $entry['ID'] = $is_post_id;
- }
- }
- // set author
- if( !empty( $user_id ) ) {
- $entry['post_author'] = $user_id;
- }
- //is edit?
- if(!empty($_POST['_cf_frm_edt'])) {
- // need to work on this still. SIGH!
- }else{
- // Insert the post into the database
- $entry_id = wp_insert_post( $entry );
- if(empty($entry_id)) {
- return;
- }
- }
- // do upload + attach
- if( !empty( $config['featured_image'] ) ) {
- $featured_image = Caldera_Forms::get_field_data( $config['featured_image'], $form );
- foreach( (array) $featured_image as $filename ) {
- $featured_image = cf_custom_fields_attach_file( $filename, $entry_id );
- update_post_meta($entry_id, '_thumbnail_id', $featured_image );
- }
- }
- //handle taxonomies
- $terms_saved = false;
- $tax_fields = cf_custom_fields_get_taxonomy_fields( $config );
- if ( ! empty( $tax_fields ) ) {
- $terms_saved = cf_custom_fields_save_terms( $tax_fields, $entry_id );
- if ( $terms_saved ) {
- $term_values = wp_list_pluck( $tax_fields, 'terms' );
- }
- }
- //get post fields into an array of fields not to save as meta.
- $post_fields = array_keys( $entry );
- // get all submission data
- $data = Caldera_Forms::get_submission_data( $form );
- update_post_meta( $entry_id, '_cf_form_id', $form['ID'] );
- foreach($data as $field=>$value) {
- if ( '_entry_token' != $field && '_entry_id' != $field ) {
- if ( in_array( $field, $post_fields ) || in_array( $form['fields'][ $field ]['ID'], $post_fields ) ) {
- continue;
- }
- }
- if ( $terms_saved ) {
- if ( is_array( $value ) ) {
- $_value = implode( ', ', $value );
- } else {
- $_value = $value;
- }
- if( in_array( $_value, $term_values ) ) {
- continue;
- }
- }
- if(empty($form['fields'][$field])) {
- continue;
- }
- if( in_array( $form['fields'][$field]['type'], array( 'button', 'html' ) ) ) {
- continue;
- }
- if( $form['fields'][$field]['type'] == 'file' ) {
- if( $field == $config['featured_image'] ) {
- continue; // dont attache twice.
- }
- foreach( (array) $value as $file ) {
- cf_custom_fields_attach_file( $file , $entry_id );
- }
- }
- $slug = $form['fields'][$field]['slug'];
- /**
- * Filter value before saving using to post type processor
- *
- * @since 2.0.3
- *
- * @param mixed $value The value to be saved
- * @param string $slug Slug of field
- * @param int $entry ID of post
- */
- $value = apply_filters( 'cf_custom_fields_pre_save_meta_key_to_post_type', $value, $slug, $entry_id );
- update_post_meta( $entry_id, $slug, $value );
- }
- return array('Post ID' => $entry_id, 'ID' => $entry_id, 'permalink' => get_permalink( $entry_id ) );
- }
- function cf_custom_fields_capture_entry($config, $form) {
- $user_id = get_current_user_id();
- if( !empty( $config['post_author'] ) ) {
- $user_id = Caldera_Forms::do_magic_tags( $config['post_author'] );
- }
- $entry = array(
- 'post_title' => Caldera_Forms::get_field_data( $config['post_title'], $form ),
- 'post_status' => Caldera_Forms::do_magic_tags( $config['post_status'] ),
- 'post_type' => $config['post_type'],
- 'post_content' => Caldera_Forms::get_field_data( $config['post_content'], $form ),
- 'post_parent' => Caldera_Forms::do_magic_tags( $config['post_parent'] ),
- 'to_ping' => Caldera_Forms::do_magic_tags( $config['to_ping'] ),
- 'post_password' => Caldera_Forms::do_magic_tags( $config['post_password'] ),
- 'post_excerpt' => Caldera_Forms::do_magic_tags( $config['post_excerpt'] ),
- 'comment_status'=> $config['comment_status'],
- );
- if( empty( $entry[ 'post_content' ] ) ) {
- $entry[ 'post_content' ] = '';
- }
- // set the ID
- if( !empty( $config['ID'] ) ) {
- $is_post_id = Caldera_Forms::do_magic_tags( $config['ID'] );
- $post = get_post( $is_post_id );
- if( !empty( $post ) && $post->post_type == $entry['post_type'] ) {
- $entry['ID'] = $is_post_id;
- }
- }
- // set author
- if( !empty( $user_id ) ) {
- $entry['post_author'] = $user_id;
- }
- //is edit?
- if(!empty($_POST['_cf_frm_edt'])) {
- // need to work on this still. SIGH!
- }else{
- // Insert the post into the database
- $entry_id = wp_insert_post( $entry );
- if(empty($entry_id)) {
- return;
- }
- }
- // do upload + attach
- if( !empty( $config['featured_image'] ) ) {
- $featured_image = Caldera_Forms::get_field_data( $config['featured_image'], $form );
- foreach( (array) $featured_image as $filename ) {
- $featured_image = cf_custom_fields_attach_file( $filename, $entry_id );
- update_post_meta($entry_id, '_thumbnail_id', $featured_image );
- }
- }
- //handle taxonomies
- $terms_saved = false;
- $tax_fields = cf_custom_fields_get_taxonomy_fields( $config );
- if ( ! empty( $tax_fields ) ) {
- $terms_saved = cf_custom_fields_save_terms( $tax_fields, $entry_id );
- if ( $terms_saved ) {
- $term_values = wp_list_pluck( $tax_fields, 'terms' );
- }
- }
- //get post fields into an array of fields not to save as meta.
- $post_fields = array_keys( $entry );
- // get all submission data
- $data = Caldera_Forms::get_submission_data( $form );
- update_post_meta( $entry_id, '_cf_form_id', $form['ID'] );
- foreach($data as $field=>$value) {
- if ( '_entry_token' != $field && '_entry_id' != $field ) {
- if ( in_array( $field, $post_fields ) || in_array( $form['fields'][ $field ]['ID'], $post_fields ) ) {
- continue;
- }
- }
- if ( $terms_saved ) {
- if ( is_array( $value ) ) {
- $_value = implode( ', ', $value );
- } else {
- $_value = $value;
- }
- if( in_array( $_value, $term_values ) ) {
- continue;
- }
- }
- if(empty($form['fields'][$field])) {
- continue;
- }
- if( in_array( $form['fields'][$field]['type'], array( 'button', 'html' ) ) ) {
- continue;
- }
- if( $form['fields'][$field]['type'] == 'file' ) {
- if( $field == $config['featured_image'] ) {
- continue; // dont attache twice.
- }
- foreach( (array) $value as $file ) {
- cf_custom_fields_attach_file( $file , $entry_id );
- }
- }
- $slug = $form['fields'][$field]['slug'];
- /**
- * Filter value before saving using to post type processor
- *
- * @since 2.0.3
- *
- * @param mixed $value The value to be saved
- * @param string $slug Slug of field
- * @param int $entry ID of post
- */
- $value = apply_filters( 'cf_custom_fields_pre_save_meta_key_to_post_type', $value, $slug, $entry_id );
- update_post_meta( $entry_id, $slug, $value );
- }
- return array('Post ID' => $entry_id, 'ID' => $entry_id, 'permalink' => get_permalink( $entry_id ) );
- }