function bbwp_add_meta_boxes() { $meta_boxes = bbwp_create_meta_boxes(); foreach ($meta_boxes as $meta_box) { add_meta_box($meta_box['id'], $meta_box['title'], $meta_box['callback'], $meta_box['screen'], $meta_box['context'], $meta_box['priority'], $meta_box['callback_args']); } }
function bbwp_save_custom_fields($post_id, $post) { // Comprobamos los permisos de escritura sobre el post que se esta guardando if ('post' == $post->post_type || !current_user_can('edit_post', $post_id)) { return; } // Comprobamos el nonce como medida de seguridad if (!isset($_POST['bbwp_meta_box_noncename']) || !wp_verify_nonce($_POST['bbwp_meta_box_noncename'], 'bbwp_meta_box')) { return; } // Obtenemos la información del metabox que se ha generado $meta_boxes = bbwp_create_meta_boxes(); // Recorremos lo metabox generados foreach ($meta_boxes as $meta_box) { // Recorremos los campos para imprimir por pantalla foreach ($meta_box['callback_args'] as $field) { switch ($field['type']) { // IMPUT TEXT case 'text': // IMPUT NUMBER // IMPUT NUMBER case 'number': // TEXTAREA // TEXTAREA case 'textarea': if (isset($field['key']) && $field['key'] != "") { update_post_meta($post_id, $field['key'], sanitize_text_field($_POST[$field['key']])); } else { if (isset($post_id)) { delete_post_meta($post_id, $field['key']); } } break; // WYSIWYG EDITOR // WYSIWYG EDITOR case 'wysiwyg': // HTML TEXTAREA // HTML TEXTAREA case 'html': // COLOR // COLOR case 'color': if (isset($field['key']) && $field['key'] != "") { update_post_meta($post_id, $field['key'], $_POST[$field['key']]); } else { if (isset($post_id)) { delete_post_meta($post_id, $field['key']); } } break; // SELECT // SELECT case 'select': // RADIO BUTTON // RADIO BUTTON case 'radio': // INLINE RADIO BUTTON // INLINE RADIO BUTTON case 'short-radio': if (isset($field['key']) && $field['key'] != "") { update_post_meta($post_id, $field['key'], $_POST[$field['key']]); } else { if (isset($post_id)) { delete_post_meta($post_id, $field['key']); } } break; // CHECKBOX // CHECKBOX case 'checkbox': // INLINE CHECKBOX // INLINE CHECKBOX case 'short-checkbox': // SWITCH CHECKBOX // SWITCH CHECKBOX case 'switch': foreach ($field['values'] as $value) { $chk_key = $field['key'] . '-' . str_replace(' ', '-', strtolower($value)); if (isset($chk_key) && $chk_key != "") { update_post_meta($post_id, $chk_key, $_POST[$chk_key]); } else { if (isset($post_id)) { delete_post_meta($post_id, $chk_key); } } } break; } } } }