function wpjam_save_post_options($post_id) { // to prevent metadata or custom fields from disappearing... if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post_id; } global $pagenow; if ($pagenow != 'post.php' && $pagenow != 'post-new.php') { return; } $post = get_post($post_id); $wpjam_options = wpjam_get_post_options(); foreach ($wpjam_options as $meta_box => $wpjam_group) { if ($wpjam_group['post_types'] == null || in_array($post->post_type, $wpjam_group['post_types'])) { foreach ($wpjam_group['fields'] as $key => $wpjam_field) { switch ($wpjam_field['type']) { case 'file': if ($_POST['wpjam_delete_field'][$key]) { delete_post_meta($post_id, $key, $_POST['wpjam_delete_field'][$key]); } if (isset($_FILES[$key]) && $_FILES[$key]) { require_once ABSPATH . 'wp-admin/includes/admin.php'; $attachment_id = media_handle_upload($key, $post_id); if (!is_wp_error($attachment_id)) { update_post_meta($post_id, $key, $attachment_id); } unset($attachment_id); } break; case 'checkbox': //xxx特殊设置,防止在前台修改此值 if (is_admin()) { if (isset($_POST[$key])) { update_post_meta($post_id, $key, $_POST[$key]); } else { if (get_post_meta($post_id, $key, true)) { delete_post_meta($post_id, $key); } } } break; case 'mulit_image': case 'multi_image': if (isset($_POST[$key]) && is_array($_POST[$key])) { //删除空图片 foreach ($_POST[$key] as $image_key => $image_value) { if (empty($image_value)) { unset($_POST[$key][$image_key]); } } update_post_meta($post_id, $key, $_POST[$key]); } break; case 'mulit_text': case 'multi_text': if (isset($_POST[$key]) && is_array($_POST[$key])) { foreach ($_POST[$key] as $multiple_text_key => $item_value) { if (empty($item_value)) { unset($_POST[$key][$multiple_text_key]); } } update_post_meta($post_id, $key, $_POST[$key]); } break; default: if (isset($_POST[$key]) && $_POST[$key]) { update_post_meta($post_id, $key, $_POST[$key]); } else { if (get_post_meta($post_id, $key, true)) { delete_post_meta($post_id, $key); } } } } } } }
function wpjam_get_post_columns($post_type = '', $column_type = 'admin') { $wpjam_post_columns = array(); if ($wpjam_post_options = wpjam_get_post_options($post_type)) { foreach ($wpjam_post_options as $meta_key => $wpjam_post_option) { if (!$wpjam_post_option['fields']) { continue; } foreach ($wpjam_post_option['fields'] as $key => $field) { if ($column_type == 'sortable') { if (!empty($field['show_admin_column']) && !empty($field['sortable_column'])) { $wpjam_post_columns[$key] = $key; } } else { if (!empty($field['show_admin_column'])) { $wpjam_post_columns[$key] = $field['title']; } } } } } return $wpjam_post_columns; }