2017-03-06 8 views
1

私はナッツを運転し始める問題に直面しています。私は自分のワードプレスサイトの代謝物を作りました。テストのために、私はページ上でそれを使いました。すべて問題なく、うまくいったが、メディアファイル(添付ファイル)に同じメタボックスを使用しようとすると、データを保存することができない。代謝物はそこに正しく表示されていますが、私が入力したデータは保存できません。 何かを見つけられなくてはなりません。あなたの助けを事前に感謝 種類は、ここで アラン私のメタボックスのデータは保存されていません

についてコードです:

<?php 
$meta_box = array(
'id' => 'onzeroadagain-meta-box', 
'title' => 'Prints size and price availablility', 
'page' => 'attachment', 
'context' => 'normal', 
'priority' => 'high', 
'fields' => array(
    array(
     'name' => 'Small', 
     'id' => 'small-checkbox', 
     'type' => 'checkbox' 
    ), 
    array(
     'name' => 'Dimensions', 
     'id' => 'dimension-small', 
     'type' => 'text', 
     'std' => 'W x H in cm' 
    ), 
    array(
     'name' => 'Price', 
     'id' => 'price-small', 
     'type' => 'text', 
     'std' => 'in Euro' 
    ), 
    array(
     'name' => 'Medium', 
     'id' => 'medium-checkbox', 
     'type' => 'checkbox' 
    ), 
    array(
     'name' => 'Dimensions', 
     'id' => 'dimension-medium', 
     'type' => 'text', 
     'std' => 'W x H in cm' 
    ), 
    array(
     'name' => 'Price', 
     'id' => 'price-medium', 
     'type' => 'text', 
     'std' => 'in Euro' 
    ), 
    array(
     'name' => 'Large', 
     'id' => 'large-checkbox', 
     'type' => 'checkbox' 
    ), 
    array(
     'name' => 'Dimensions', 
     'id' => 'dimension-large', 
     'type' => 'text', 
     'std' => 'W x H in cm' 
    ), 
    array(
     'name' => 'Price', 
     'id' => 'price-large', 
     'type' => 'text', 
     'std' => 'in Euro' 
    )  
) 
); 
add_action('admin_menu', 'onzeroadagain_add_box'); 
// Add meta box 
function onzeroadagain_add_box() { 
global $meta_box; 
add_meta_box($meta_box['id'], $meta_box['title'], 'onzeroadagain_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']); 
} 
// Callback function to show fields in meta box 
function onzeroadagain_show_box() { 
global $meta_box, $post; 
// Use nonce for verification 
echo '<input type="hidden" name="onzeroadagain_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />'; 
echo '<table class="form-table">'; 
foreach ($meta_box['fields'] as $field) { 
    // get current post meta data 
    $meta = get_post_meta($post->ID, $field['id'], true); 
    echo '<tr>', 
      '<th style="width:20%"><label for="', $field['id'], '">', $field['name'], '</label></th>', 
      '<td>'; 
    switch ($field['type']) { 
     case 'checkbox': 
      echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />'; 
      break; 
     case 'text': 
     echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:30%" />', '<br />', $field['desc']; 
      break; 
    } 
    echo  '</td><td>', 
     '</td></tr>'; 
} 
echo '</table>'; 
} 
add_action('save_post', 'onzeroadagain_save_data'); 
// Save data from meta box 
function onzeroadagain_save_data($post_id) { 
global $meta_box; 
// verify nonce 
if (!wp_verify_nonce($_POST['onzeroadagain_meta_box_nonce'],  basename(__FILE__))) { 
    return $post_id; 
} 
// check autosave 
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
    return $post_id; 
} 
// check permissions 
if ('page' == $_POST['post_type']) { 
    if (!current_user_can('edit_page', $post_id)) { 
     return $post_id; 
    } 
} elseif (!current_user_can('edit_post', $post_id)) { 
    return $post_id; 
} 
foreach ($meta_box['fields'] as $field) { 
    $old = get_post_meta($post_id, $field['id'], true); 
    $new = $_POST[$field['id']]; 
    if ($new && $new != $old) { 
     update_post_meta($post_id, $field['id'], $new); 
    } elseif ('' == $new && $old) { 
     delete_post_meta($post_id, $field['id'], $old); 
    } 
} 
} 

答えて

0

私は最近、同じ問題に遭遇しました。私は2つの異なる代謝産物を持っていました。一つは側面に、もう一つは「正常」にあります。私の「側」代謝物の欄は、正常に保存されていましたが、「正常」のものは保存されませんでした。私は「普通」とBAMの代わりに、第2のもののコンテキストを「側」に変更しようとしました!すべてがうまく保存されました。

私はそれも試してみて、それがうまくいくかどうか教えてください。

私はいくつかの調査をしましたが、これには何の説明もありませんでした。私には間違ったやり方をしていない、あるいは何らかのバグかもしれません。私は調査を続けます。

関連する問題