/** * Get builder content based on the submitted panels_data. */ function siteorigin_panels_ajax_builder_content() { header('content-type: text/html'); if (!current_user_can('edit_post', $_POST['post_id'])) { wp_die(); } if (empty($_POST['post_id']) || empty($_POST['panels_data'])) { echo ''; wp_die(); } // echo the content $panels_data = json_decode(wp_unslash($_POST['panels_data']), true); $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']); $panels_data = siteorigin_panels_styles_sanitize_all($panels_data); echo siteorigin_panels_render(intval($_POST['post_id']), false, $panels_data); wp_die(); }
/** * Save the panels data * * @param $post_id * @param $post * * @action save_post */ function siteorigin_panels_save_post($post_id, $post) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if (empty($_POST['_sopanels_nonce']) || !wp_verify_nonce($_POST['_sopanels_nonce'], 'save')) { return; } if (!current_user_can('edit_post', $post_id)) { return; } if (!isset($_POST['panels_data'])) { return; } if (!wp_is_post_revision($post_id)) { $panels_data = json_decode(wp_unslash($_POST['panels_data']), true); $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']); $panels_data = siteorigin_panels_styles_sanitize_all($panels_data); if (!empty($panels_data['widgets']) || !empty($panels_data['grids'])) { update_post_meta($post_id, 'panels_data', $panels_data); } else { // There are no widgets or rows, so delete the panels data delete_post_meta($post_id, 'panels_data'); } } else { // When previewing, we don't need to wp_unslash the panels_data post variable. $panels_data = json_decode(wp_unslash($_POST['panels_data']), true); $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']); $panels_data = siteorigin_panels_styles_sanitize_all($panels_data); // Because of issue #20299, we are going to save the preview into a different variable so we don't overwrite the actual data. // https://core.trac.wordpress.org/ticket/20299 if (!empty($panels_data['widgets'])) { update_post_meta($post_id, '_panels_data_preview', $panels_data); } else { delete_post_meta($post_id, '_panels_data_preview'); } } }
/** * Save the panels data * * @param $post_id * @param $post * * @action save_post */ function siteorigin_panels_save_post($post_id, $post) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } $nonce = filter_input(INPUT_POST, '_sopanels_nonce', FILTER_SANITIZE_STRING); if (!wp_verify_nonce($nonce, 'save')) { return; } if (!current_user_can('edit_post', $post_id)) { return; } $request = filter_input_array(INPUT_POST, array('panels_data' => FILTER_DEFAULT)); if (!wp_is_post_revision($post_id)) { $panels_data = json_decode($request['panels_data'], true); $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']); $panels_data = siteorigin_panels_styles_sanitize_all($panels_data); if (!empty($panels_data['widgets'])) { update_post_meta($post_id, 'panels_data', $panels_data); } else { // There are no widgets, so delete the panels data. delete_post_meta($post_id, 'panels_data'); } } else { // When previewing, we don't need to wp_unslash the panels_data post variable. $panels_data = json_decode($request['panels_data'], true); $panels_data['widgets'] = siteorigin_panels_process_raw_widgets($panels_data['widgets']); $panels_data = siteorigin_panels_styles_sanitize_all($panels_data); // Because of issue #20299, we are going to save the preview into a different variable so we don't overwrite the actual data. // https://core.trac.wordpress.org/panels_data/20299 if (!empty($panels_data['widgets'])) { update_post_meta($post_id, '_panels_data_preview', $panels_data); } } }