2014-12-11 3 views
0

사용자 지정 게시 유형을 만들고 사용자 지정 메타 상자를 포함하고 싶지만 저장할 수 없습니다. 사용자 지정 메타 상자가 저장되지 않습니다.

이는 METABOX 코드

/** 
* Custom MetaBoxes 
*/ 

function add_models_metaboxes() { 
    add_meta_box('tj_modeldetails', 'Model Details', 'tj_modeldetails', 'models', 'normal', 'high'); 
} 

// The Event Location Metabox 

function tj_modeldetails() { 
    global $post; 

    // Noncename needed to verify where the data originated 
    echo '<input type="hidden" name="eventmeta_noncename" id="eventmeta_noncename" value="' . 
    wp_create_nonce(plugin_basename(__FILE__)) . '" />'; 

    // Get the location data if its already been entered 
    $dress_size = get_post_meta($post->ID, '_dress_size', true); 
    $height  = get_post_meta($post->ID, '_height', true); 
    $bust  = get_post_meta($post->ID, '_bust', true); 
    $waist  = get_post_meta($post->ID, '_waist', true); 
    $hips  = get_post_meta($post->ID, '_hips', true); 
    $shoe  = get_post_meta($post->ID, '_shoe', true); 
    $hair  = get_post_meta($post->ID, '_hair', true); 
    $eyes  = get_post_meta($post->ID, '_eyes', true); 

    // Echo out the field 
    echo '<p>Dress Size:</p>'; 
    echo '<input type="text" name="_dress_size" value="' . $dress_size . '" class="widefat" />'; 

    echo '<p>Height:</p>'; 
    echo '<input type="text" name="_height" value="'. $height . '" class="widefat" />'; 

    echo '<p>Bust:</p>'; 
    echo '<input type="text" name="_bust" value="'. $bust . '" class="widefat" />'; 

    echo '<p>Waist:</p>'; 
    echo '<input type="text" name="_waist" value="'. $waist . '" class="widefat" />'; 

    echo '<p>Hips:</p>'; 
    echo '<input type="text" name="_hips" value="'. $hips . '" class="widefat" />'; 

    echo '<p>Shoe:</p>'; 
    echo '<input type="text" name="_shoe" value="'. $shoe . '" class="widefat" />'; 

    echo '<p>Hair:</p>'; 
    echo '<input type="text" name="_hair" value="'. $hair . '" class="widefat" />'; 

    echo '<p>Eyes:</p>'; 
    echo '<input type="text" name="_eyes" value="'. $eyes . '" class="widefat" />'; 


} 

function tj_save_models_meta($post_id, $post) { 
    // verify this came from our screen with proper authorisation. 
    if (!wp_verify_nonce($_POST['modelmeta_noncename'], plugin_basename(__FILE__))) { 
     return $post->ID; 
    } 

    // is user allowed to edit the post or page 
    if (!current_user_can('edit_post', $post->ID)) 
     return $post->ID; 

    // Put metaboxes into an array 

    $models_meta['_dress_size'] = $_POST['_dress_size']; 
    $models_meta['_height']  = $_POST['_height']; 
    $models_meta['_bust']  = $_POST['_bust']; 
    $models_meta['_waist']  = $_POST['_waist']; 
    $models_meta['_hips']  = $_POST['_hips']; 
    $models_meta['_shoe']  = $_POST['_shoe']; 
    $models_meta['_hair']  = $_POST['_hair']; 
    $models_meta['_eyes']  = $_POST['_eyes']; 

    foreach ($models_meta as $key => $value) { 
     if($post->post_type == 'revision') return; // don't store custom data twice 
     #$value = implode(',', (array)$value); // If $value is an array, make it a CSV (unlikely) 

     if(get_post_meta($post->ID, $key, FALSE)) { 
      update_post_meta($post->ID, $key, $value); 
     } else { 
      add_post_meta($post->ID, $key, $value); 
     } 

     if(!$value) delete_post_meta($post->ID, $key); 
    } 
} 

add_action('save_post', 'tj_save_models_meta', 1, 2); 

입니다

// Custom post type function 
function custom_post_type() { 

// Set UI labels for Custom Post Type 
    $labels = array(
     'name'    => _x('Models', 'Post Type General Name', 'metro'), 
     'singular_name'  => _x('Model', 'Post Type Singular Name', 'metro'), 
     'menu_name'   => __('Models', 'metro'), 
     'parent_item_colon' => __('Parent Model', 'metro'), 
     'all_items'   => __('All Models', 'metro'), 
     'view_item'   => __('View Model', 'metro'), 
     'add_new_item'  => __('Add New Model', 'metro'), 
     'add_new'    => __('Add New', 'metro'), 
     'edit_item'   => __('Edit Model', 'metro'), 
     'update_item'   => __('Update Model', 'metro'), 
     'search_items'  => __('Search Model', 'metro'), 
     'not_found'   => __('Not Found', 'metro'), 
     'not_found_in_trash' => __('Not found in Trash', 'metro'), 
    ); 

// Set other options for Custom Post Type 

    $args = array(
     'label'    => __('Models', 'metro'), 
     'description'   => __('Model news and reviews', 'metro'), 
     'labels'    => $labels, 
     // Features this CPT supports in Post Editor 
     'supports'   => array('title', 'editor', 'author', 'thumbnail', 'revisions'), 
     // You can associate this CPT with a taxonomy or custom taxonomy. 
     //'taxonomies'   => array('genres'), 
     /* A hierarchical CPT is like Pages and can have 
     * Parent and child items. A non-hierarchical CPT 
     * is like Posts. 
     */ 
     'hierarchical'   => false, 
     'public'     => true, 
     'show_ui'     => true, 
     'show_in_menu'   => true, 
     'show_in_nav_menus'  => true, 
     'show_in_admin_bar'  => true, 
     'menu_position'   => 5, 
     'can_export'    => true, 
     'has_archive'    => true, 
     'exclude_from_search'  => false, 
     'publicly_queryable'  => true, 
     'capability_type'   => 'post', 
     'register_meta_box_cb' => 'add_models_metaboxes' 
    ); 

    // Registering your Custom Post Type 
    register_post_type('Models', $args); 

} 

/* Hook into the 'init' action so that the function 
* Containing our post type registration is not 
* unnecessarily executed. 
*/ 

add_action('init', 'custom_post_type'); 

을 작동 내 사용자 지정 게시 유형 기능입니다 나는 값이 없습니다 게시 클릭하면 메타 박스는 포스트 창에 표시 않지만 저장되었습니다. 내가 뭘 놓쳤는가?

답변

0

비표가 넌스 필드가 "modelmeta_noncename"

if (!wp_verify_nonce($_POST['modelmeta_noncename'],

+0

echo '<input type="hidden" name="eventmeta_noncename" id="eventmeta_noncename"

확인되고 하나는 "eventmeta_noncename"호출되는 코드를 살펴했다, 실패 필요합니다 확인 정말 고마워. 나는 그것이 그렇게 작은 것이 될 것이라고 생각했습니다. – Tristan

관련 문제