Example #1
0
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;
}