I have two csv databases, I already migrate de patients database to wordpress but now I need to migrate a services database, each patient can have 1 or more services. First I compare both csv databases and add the data if the Name and Last Name are the same. Everything works good, the data is in the wordpress database because I can print it, but the multicheck box doesn't show the saved data:
And another problem is that I can't click update because on the front end there is no checkbox checked so the custom post type updates the database with nothing checked.
Here is the code that I am using to get the csv data and saves it on the wordpress database:
`function wd_add_data_metabox_with_namemb()
{
wp_suspend_cache_addition(true);
$file_path = get_stylesheet_directory() . '/PATINENTS_LAVISH.csv';
// echo var_dump($file_path);
if (isset($file_path)) {
$filename = $file_path;
$count_patients = 0;
$file = fopen($filename, "r");
while (($getData = fgetcsv($file, null, ',')) !== FALSE) { //GET THE VARIABLES SET
$count_patients++;
echo $count_patients . " :";
echo var_dump($getData);
echo '<br/>';
$name = $getData[2];
$last_name = $getData[3];
if ($name != '') {
$file_path_2 = get_stylesheet_directory() . '/CHARTS_PATIENTS.csv';
$filename_2 = $file_path_2;
$count_charts = 0;
$file_2 = fopen($filename_2, "r");
while (($getData_2 = fgetcsv($file_2, null, ',')) !== FALSE) { //GET THE VARIABLES SET
echo "Chart " . $count_charts . " : ";
echo var_dump($getData_2);
echo '<br/>';
$name_chart = $getData_2[0];
$last_name_chart = $getData_2[1];
echo $name . ' and ' . $name_chart;
echo $last_name . ' and ' . $last_name_chart;
echo '<br/>';
if ($name == $name_chart && $last_name == $last_name_chart) {
$q = new WP_Query(array(
'post_type' => 'patient',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'patient_name',
'value' => $name,
),
array(
'key' => 'patient_last_name',
'value' => $last_name,
),
)
));
while ($q->have_posts()) {
$q->the_post();
$patient_id_chart = get_the_ID();
echo 'Patient ID ' . $patient_id_chart;
$service_chart = get_post_meta($patient_id_chart, 'patient_area_treated_group', true);
$service_chart_2 = get_post_meta($patient_id_chart, 'patient_pre_charting_answers', true);
echo var_dump($service_chart_2);
// check for existing charts
if (!empty($service_chart)) {
$key = count($service_chart);
} else {
$key = 0;
}
if (get_post_type() == 'patient') {
$ticket_id = $patient_id_chart . '-' . $key;
$area_treated = array(
explode(' $', $getData_2[2], 2),
);
$time = strtotime($getData_2[8]);
$comments = $getData_2[6];
$discount_type = 'fixed';
$discount_amount = $getData_2[7];
$chart_energy = $getData_2[4];
$chart_size = $getData_2[3];
$chart_dcd = $getData_2[5];
if (get_page_by_title($area_treated[0], OBJECT, 'service')) {
// Exists
} else {
// Gather post data.
$my_post = array(
'post_title' => $area_treated[0][0],
'post_status' => 'publish',
'post_type' => 'service',
'meta_input' => array(
'service_male_price' => $area_treated[0][1],
'service_female_price' => $area_treated[0][1]
)
);
// Insert the post into the database.
wp_insert_post($my_post);
}
$service_chart[$key] = array(
'patient_service_ticket_id' => $ticket_id,
'patient_area_treated' => $area_treated,
'patient_service_units' => NULL,
'patient_service_time_treated' => $time,
'patient_service_comments' => $comments,
'patient_service_discount_type' => $discount_type,
'patient_service_discount_amount' => $discount_amount,
'patient_service_picture' => NULL,
);
$pre_service_chart[$key] = array(
'patient_service_pre_chart_id' => $ticket_id,
'patient_pregnant' => '',
'patient_pre_chart_comments' => NULL,
'patient_chart_energy' => $chart_energy,
'patient_chart_size' => $chart_size,
'patient_chart_dcd' => $chart_dcd,
);
if (!empty($area_treated) || $comments != '' || $discount_type != '' || $discount_amount != '') {
update_post_meta($patient_id_chart, 'patient_area_treated_group', $service_chart);
}
if (!empty($area_treated)) {
update_post_meta($patient_id_chart, 'patient_pre_charting_answers', $pre_service_chart);
// reset the form
update_post_meta($patient_id_chart, 'patient_area_treated', '');
update_post_meta($patient_id_chart, 'patient_service_time_treated_single', '');
update_post_meta($patient_id_chart, 'patient_service_comments_single', '');
update_post_meta($patient_id_chart, 'patient_service_discount_type_single', '');
update_post_meta($patient_id_chart, 'patient_service_discount_amount_single', '');
update_post_meta($patient_id_chart, 'patient_service_pre_chart_id', '');
update_post_meta($patient_id_chart, 'patient_pregnant', '');
update_post_meta($patient_id_chart, 'patient_pre_chart_comments', '');
update_post_meta($patient_id_chart, 'patient_chart_energy', '');
update_post_meta($patient_id_chart, 'patient_chart_size', '');
update_post_meta($patient_id_chart, 'patient_chart_dcd', '');
}
}
}
$count_charts++;
}
wp_reset_postdata();
}
}
}
fclose($file);
}
}
add_action('wp_head', 'wd_add_data_metabox_with_namemb');`
I just need the multicheckbox to read the database and show the checked options.
This is the code that creates all the custom fields for the patients custom post type with cmb2 plugin:
function patient_meta()
{
$role = user_has_role(get_current_user_id(), 'staff_nurse');
/**
* Metaboxes for Patient Info
*/
if ($role == false) {
$cmb_user = new_cmb2_box(array(
'id' => 'patient_meta',
'title' => __('Patient Data', 'cmb2'),
'object_types' => array('patient'), // Tells CMB2 to use user_meta vs post_meta
'show_names' => true,
'vertical_tabs' => false,
'tabs' => array(
array(
'id' => 'tab-1',
'title' => __('Info', 'cmb2'),
'fields' => array(
'patient_name',
'patient_last_name',
'patient_cell_phone',
'patient_home_phone',
'patient_date_of_birth',
'patient_gender',
'patient_email',
'patient_comments'
),
),
array(
'id' => 'tab-2',
'title' => __('Services', 'cmb2'),
'fields' => array(
'patient_area_treated_single',
'patient_service_comments_single',
'patient_service_discount_type_single',
'patient_service_discount_amount_single',
'patient_service_submit_single',
),
),
array(
'id' => 'tab-3',
'title' => __('Charts', 'cmb2'),
'fields' => array(
'patient_pre_charting_answers',
'patient_pre_chart_comments',
'patient_chart_area_treated',
'patient_time_treated',
'patient_chart_energy',
'patient_chart_size',
'patient_chart_dcd',
'patient_chart_comments',
'patient_chart_discount_type',
'patient_chart_discount_amount',
),
),
array(
'id' => 'tab-4',
'title' => __('Notes', 'cmb2'),
'fields' => array(
'patient_chart_comments',
'patient_note_comments_group',
'patient_notes_comments',
),
),
array(
'id' => 'tab-5',
'title' => __('Images', 'cmb2'),
'fields' => array(
'patient_images',
),
),
array(
'id' => 'tab-6',
'title' => __('Documents', 'cmb2'),
'fields' => array(
'patient_documents',
),
),
array(
'id' => 'tab-7',
'title' => __('Clearances', 'cmb2'),
'fields' => array(
'patient_clearances',
),
),
array(
'id' => 'tab-8',
'title' => __('Referrals', 'cmb2'),
'fields' => array(
'patient_referrals',
'referred_patient_name',
'referred_date',
'referred_date_used',
'referred_discount_used',
'patient_available_ticket_ids',
),
),
array(
'id' => 'tab-9',
'title' => __('History', 'cmb2'),
'fields' => array(
'patient_area_treated_group',
'patient_service_ticket_id',
'patient_area_treated',
'patient_service_comments',
'patient_service_picture',
),
),
),
));
} else {
$cmb_user = new_cmb2_box(array(
'id' => 'patient_meta',
'title' => __('Patient Data', 'cmb2'),
'object_types' => array('patient'), // Tells CMB2 to use user_meta vs post_meta
'show_names' => true,
'vertical_tabs' => false,
'tabs' => array(
array(
'id' => 'tab-1',
'title' => __('Info', 'cmb2'),
'fields' => array(
'patient_name',
'patient_last_name',
'patient_cell_phone',
'patient_home_phone',
'patient_date_of_birth',
'patient_gender',
'patient_email',
'patient_comments'
),
),
array(
'id' => 'tab-2',
'title' => __('Services', 'cmb2'),
'fields' => array(
'patient_area_treated_single',
'patient_service_comments_single',
'patient_service_discount_type_single',
'patient_service_discount_amount_single',
'patient_service_submit_single',
),
),
array(
'id' => 'tab-3',
'title' => __('Charts', 'cmb2'),
'fields' => array(
'patient_pre_charting_answers',
'patient_pre_chart_comments',
'patient_chart_area_treated',
'patient_time_treated',
'patient_chart_energy',
'patient_chart_size',
'patient_chart_dcd',
'patient_chart_comments',
'patient_chart_discount_type',
'patient_chart_discount_amount',
),
),
array(
'id' => 'tab-4',
'title' => __('Notes', 'cmb2'),
'fields' => array(
'patient_chart_comments',
'patient_note_comments_group',
'patient_notes_comments',
),
),
array(
'id' => 'tab-5',
'title' => __('Images', 'cmb2'),
'fields' => array(
'patient_images',
),
),
array(
'id' => 'tab-6',
'title' => __('Documents', 'cmb2'),
'fields' => array(
'patient_documents',
),
),
array(
'id' => 'tab-7',
'title' => __('Clearances', 'cmb2'),
'fields' => array(
'patient_clearances',
),
),
array(
'id' => 'tab-8',
'title' => __('Referrals', 'cmb2'),
'fields' => array(
'patient_referrals',
'referred_patient_name',
'referred_date',
'referred_date_used',
'referred_discount_used',
'patient_available_ticket_ids',
),
),
),
));
}
$cmb_user->add_field(array(
'name' => __('Patient Name', 'cmb2'),
'id' => 'patient_name',
'type' => 'text',
'column' => true,
'description' => '',
));
$cmb_user->add_field(array(
'name' => __('Last Name', 'cmb2'),
'id' => 'patient_last_name',
'type' => 'text',
'column' => true,
));
$cmb_user->add_field(array(
'name' => __('Cell Phone', 'cmb2'),
'id' => 'patient_cell_phone',
'type' => 'text',
'column' => true,
));
$cmb_user->add_field(array(
'name' => __('Home Phone', 'cmb2'),
'id' => 'patient_home_phone',
'type' => 'text',
'column' => true,
));
$cmb_user->add_field(array(
'name' => __('Date of Birth', 'cmb2'),
'description' => '',
'id' => 'patient_date_of_birth',
'type' => 'text_date'
));
$cmb_user->add_field(array(
'name' => 'Gender',
'id' => 'patient_gender',
'type' => 'radio_inline',
'options' => array(
'Male' => __('Male', 'cmb2'),
'Female' => __('Female', 'cmb2')
),
));
$cmb_user->add_field(array(
'name' => __('Email Address', 'cmb2'),
'id' => 'patient_email',
'type' => 'text'
));
$cmb_user->add_field(array(
'name' => __('Patient Comments', 'cmb2'),
'id' => 'patient_comments',
'type' => 'textarea'
));
/**
* Metaboxes for Patient Services
*/
/*****
* Single form to add to history tab
*****/
// $cmb_user->add_field(array(
// 'id' => 'patient_service_ticket_id_single',
// 'type' => 'text',
// 'description' => 'Ticket ID / Chart ID - not for editing',
// 'name' => 'Ticket ID',
// ) );
$cmb_user->add_field(array(
'id' => 'patient_area_treated_single',
'name' => __('Area Treated', 'cmb2'),
'type' => 'radio',
'options' => get_all_services(),
'default' => 'No Treatment $0.00'
));
$cmb_user->add_field(array(
'id' => 'patient_service_time_treated_single',
'name' => __('Time Treated', 'cmb2'),
'type' => 'text_datetime_timestamp',
// 'default' => get_post_datetime()
));
// $cmb_user->add_field(array(
// 'id' => 'patient_service_comments_single',
// 'name' => __('Comments', 'cmb2'),
// 'type' => 'textarea'
// ));
$cmb_user->add_field(array(
'name' => 'Discount Type',
'id' => 'patient_service_discount_type_single',
'type' => 'radio_inline',
'options' => array(
'none' => 'None',
'percentage' => 'Percentage',
'fixed' => 'Fixed Amount'
)
));
$cmb_user->add_field(array(
'name' => __('Discount Amount', 'cmb2'),
'id' => 'patient_service_discount_amount_single',
'type' => 'text'
));
$cmb_user->add_field(array(
'name' => __('Submit Service', 'cmb2'),
'id' => 'patient_service_submit_single',
'type' => 'text'
));
$cmb_user->add_field(array(
'name' => 'Add Service',
'id' => 'patient_service_submit_single',
'type' => 'button',
'after' => '<button value="submit-single" type="submit" class="btn btn-primary">Submit</button>'
));
$group_field_id = $cmb_user->add_field(array(
'id' => 'patient_area_treated_group',
'type' => 'group',
'options' => array(
'group_title' => __('Service {#}', 'cmb2'), // since version 1.1.4, {#} gets replaced by row number
'add_button' => __('Add Another Service', 'cmb2'),
'remove_button' => __('Remove Service', 'cmb2'),
'sortable' => true
),
));
$cmb_user->add_group_field($group_field_id, array(
'id' => 'patient_service_ticket_id',
'type' => 'text',
'description' => 'Ticket ID / Chart ID - not for editing',
'name' => 'Ticket ID'
));
$cmb_user->add_group_field($group_field_id, array(
'id' => 'patient_area_treated',
'name' => __('Area Treated', 'cmb2'),
'type' => 'multicheck',
'options' => get_all_services(),
'default' => 'No Treatment $0.00'
));
$cmb_user->add_group_field($group_field_id, array(
'id' => 'patient_service_time_treated',
'name' => __('Time Treated', 'cmb2'),
'type' => 'text_datetime_timestamp'
));
$cmb_user->add_group_field($group_field_id, array(
'id' => 'patient_service_comments',
'name' => __('Comments', 'cmb2'),
'type' => 'textarea'
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Discount Type',
'id' => 'patient_service_discount_type',
'type' => 'radio_inline',
'options' => array(
'none' => 'None',
'percentage' => 'Percentage',
'fixed' => 'Fixed Amount'
)
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Discount Amount',
'id' => 'patient_service_discount_amount',
'type' => 'text',
));
// $cmb_user->add_group_field( $group_field_id, array(
// 'id' => 'patient_service_picture',
// 'name' => __('Facial Picture', 'cmb2'),
// 'type' => 'file'
// ));
/**
* Metaboxes for Patient Charting
*/
$group_field_id = $cmb_user->add_field(array(
'id' => 'patient_pre_charting_answers',
'type' => 'group',
'options' => array(
'group_title' => __('Chart {#}', 'cmb2'), // since version 1.1.4, {#} gets replaced by row number
'add_button' => __('Add Another Chart', 'cmb2'),
'remove_button' => __('Remove Chart', 'cmb2'),
'sortable' => true,
),
));
// match pre-chart to service
$cmb_user->add_group_field($group_field_id, array(
'name' => 'This Laser Pre-Chart is for test',
'id' => 'patient_service_pre_chart_id',
'type' => 'select_plus',
'description' => 'Select Service Ticket ID',
'options' => get_ticket_ids()
));
// Id's for group's fields only need to be unique for the group. Prefix is not needed.
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Are you pregnant or breastfeeding?',
'id' => 'patient_pregnant',
'type' => 'radio_inline',
'options' => array(
'Yes' => __('Yes', 'cmb2'),
'No' => __('No', 'cmb2')
),
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Pre Chart Comments',
'id' => 'patient_pre_chart_comments',
'type' => 'textarea_small',
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Energy',
'id' => 'patient_chart_energy',
'type' => 'text',
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Spot Size',
'id' => 'patient_chart_size',
'type' => 'text',
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'DCD',
'id' => 'patient_chart_dcd',
'type' => 'text',
));
/**
* Metaboxes for Patient Notes
*/
$cmb_user->add_field(array(
'name' => 'Comments',
'id' => 'patient_chart_comments',
'type' => 'textarea_small',
'after' => '<button value="submit-single" type="submit" class="btn btn-primary">Submit</button>',
));
$group_field_id = $cmb_user->add_field(array(
'id' => 'patient_note_comments_group',
'type' => 'group',
'options' => array(
'group_title' => __('Comment {#}', 'cmb2'), // since version 1.1.4, {#} gets replaced by row number
'add_button' => __('Add Another Comment', 'cmb2'),
'remove_button' => __('Remove Comment', 'cmb2'),
'sortable' => true,
),
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Comments',
'id' => 'patient_notes_comments',
'type' => 'textarea_small',
));
/**
* Metaboxes for Patient Images
*/
$cmb_user->add_field(array(
'name' => 'Images',
'id' => 'patient_images',
'type' => 'file_list',
'text' => array(
'file_text' => 'test'
)
));
/**
* Metaboxes for Patient Documents
*/
$cmb_user->add_field(array(
'name' => 'Documents',
'id' => 'patient_documents',
'type' => 'file_list',
));
/**
* Metaboxes for Patient Clearances
*/
$cmb_user->add_field(array(
'name' => 'Clearances',
'id' => 'patient_clearances',
'type' => 'file_list',
));
/**
* Metaboxes for Patient Referrals
*/
$group_field_id = $cmb_user->add_field(array(
'id' => 'patient_referrals',
'type' => 'group',
'options' => array(
'group_title' => __('Referral {#}', 'cmb2'), // since version 1.1.4, {#} gets replaced by row number
'add_button' => __('Add Another Referral', 'cmb2'),
'remove_button' => __('Remove Referral', 'cmb2'),
'sortable' => true,
),
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Referred Patient Name',
'id' => 'referred_patient_name',
'type' => 'select',
'options' => get_patient_names()
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Referred Date',
'id' => 'referred_date',
'type' => 'text_date',
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Date Used',
'id' => 'referred_date_used',
'type' => 'text_date',
));
$cmb_user->add_group_field($group_field_id, array(
'name' => 'Discount Used',
'id' => 'referred_discount_used',
'type' => 'radio_inline',
'options' => array(
'Yes' => __('Yes', 'cmb2'),
'No' => __('No', 'cmb2')
),
));
$cmb_user->add_group_field($group_field_id, array(
'id' => 'patient_available_ticket_ids',
'name' => __('Ticket ID', 'cmb2'),
'description' => 'Assign the ticket ID to apply this discount',
'type' => 'select',
'options' => get_ticket_ids()
));
}
add_action('cmb2_init', 'patient_meta');
This is a shorter version of my question from How to get values only from a PHP array inside multiple nested Arrays without knowing value? so hoping someone can help.
MAIN ISSUE I don't know what to call to get things inside ARRAY
What I need is inside that Array of Extras. I've duplicated & modified everything I can to get these values but can't seem to figure it out. Any help is really appreciated.
The registration, milage, condition shown is the output of $autoshowroom_portfolio_specifications_arr
array (
'label' => __( 'Checkboxes field', 'progression-car-dealer' ),
'name' => 'pcd_checkboxes',
'display' => 'table',
'min' => '',
'max' => '',
'sub_fields' => array (
array (
'key' => 'field_52816dc9ffee11',
'label' => __( 'Checkboxes to Customize', 'progression-car-dealer' ),
'name' => 'pcd_checkboxes',
'type' => 'checkbox',
'instructions' => __( 'Selected fields will be used', 'progression-car-dealer' ),
'choices' => $choices,
'default_value' => '',
'layout' => 'horizontal',
)
),
),
More code
array(
'id' => 'autoshowroom_Detail_show_extras',
'label' => esc_html__('Show Extras', 'autoshowroom'),
'desc' => '',
'sdt' => 'yes',
'type' => 'select',
'section' => 'TZVehicleDetail',
// 'section' => 'TZVehicle',
'choices' => array(
array(
'value' => 'yes',
'label' => esc_html__('Show', 'autoshowroom'),
),
array(
'value' => 'no',
'label' => esc_html__('Hide', 'autoshowroom'),
)
)
),
$car_extras = array_unique( array_merge( array (
__( 'Auxiliary heating', 'progression-car-dealer' ),
__( 'ABS', 'progression-car-dealer' ),
__( 'Central locking', 'progression-car-dealer' ),
__( 'Power Assisted Steering', 'progression-car-dealer' ),
__( 'Cruise control', 'progression-car-dealer' ),
__( 'Immobilizer', 'progression-car-dealer' ),
__( 'Warranty', 'progression-car-dealer' ),
__( 'Electric windows', 'progression-car-dealer' ),
__( 'Financing', 'progression-car-dealer' ),
__( 'Another', 'progression-car-dealer' ),
__( 'Last', 'progression-car-dealer' ),
), $this->get_meta_values( 'extras', 'vehicle' ) ));
$car_extras = array_combine( $car_extras, $car_extras);
More code
public function register_field( $args ) {
// ACF requires a unique key per field so lets generate one
$key = md5( serialize( $args ));
if ( empty( $args['type'] )) {
$args['type'] = 'number';
}
$type = $args['type'];
if ( 'taxonomy' == $type ) {
$field = wp_parse_args( $args, array(
'key' => $key,
'label' => '',
'name' => '',
'type' => 'taxonomy',
'instructions' => '',
'taxonomy' => '',
'field_type' => 'select',
'allow_null' => 1,
'load_save_terms' => 1,
'return_format' => 'id',
'multiple' => 0,
'sort' => 0,
'group' => 'overview'
) );
} else if ( 'radio' == $type ) {
$field = wp_parse_args( $args, array (
'key' => $key,
'label' => '',
'name' => '',
'instructions' => '',
'choices' => array(),
'other_choice' => 1,
'save_other_choice' => 1,
'default_value' => '',
'layout' => 'horizontal',
'sort' => 0,
'group' => 'specs'
) );
} else if ( 'checkbox' == $type ) {
$field = wp_parse_args( $args, array (
'key' => $key,
'label' => '',
'name' => '',
'instructions' => '',
'choices' => array(),
'layout' => 'vertical',
'sort' => 0,
'multiple' => 1,
'group' => 'specs'
) );
} else {
$field = wp_parse_args( $args, array (
'key' => $key,
'label' => '',
'name' => '',
'type' => 'number',
'instructions' => '',
'default_value' => '',
'placeholder' => '',
'prepend' => '',
'append' => '',
'min' => 0,
'max' => '',
'step' => '',
'sort' => 0,
'group' => 'specs'
) );
}
$field = apply_filters( 'pcd/register_field', $field );
$this->fields[$field['name']] = $field;
More code
'extras' => array(
'label' => __( 'Extras', 'progression-car-dealer' ),
'name' => 'extras',
'type' => 'checkbox',
'choices' => $car_extras,
'other_choice' => 55,
'save_other_choice' => 55,
'default_value' => '',
'layout' => 'horizontal',
'sort' => 95,
),