2011-01-17 17 views
0

私はポストで値のペアを保存することができる単純なプラグに取り組んでいます。ペアリングを追加または削除するJSが少しあります。すべて正常に動作しますが、ランダムにデータは消えます。私はそれが自動保存の問題か何か、私はそれを説明したと思っていたかどうかは分かりません。Wordpressのプラグインデータが消えています

私のデータは保存されていますが、ランダムに消えてしまう理由はありますか?

<?php 

function esys_menus() { 
    if (function_exists('add_meta_box')) { 
     add_meta_box('esys_box','Energy System Details','esys_meta','energy-systems'); 
    } 
} 

function esys_meta() { 
    global $wpdb, $post_ID; 
    $files = esys_get_files($post_ID); 
    ?> 

    <table> 
     <thead> 
      <tr> 
       <th width="50%">BPM</th> 
       <th width="50%">Duration</th> 
      </tr> 
     </thead> 
     <tbody> 
     <?php 
$i = 0; 
if ($files && $post_ID) { 
foreach ((array)$files as $file) { ?> 
      <tr id="esys-<?php echo $i; ?>"> 
       <td><input type="text" name="esys[<?php echo $i; ?>][bpm]" value="<?php echo $file['bpm']; ?>" /></td> 
       <td><input type="text" name="esys[<?php echo $i; ?>][duration]" value="<?php echo $file['duration']; ?>" /></td> 
       <td><a href="#" class="button" onclick="esys_remove(<?php echo $i; ?>); return false;">X</a></td> 
      </tr> 
<?php $i++; 
}; }; ?> 
      <tr id="esys-<?php echo $i; ?>"> 
       <td><input type="text" name="esys[<?php echo $i; ?>][bpm]" /></td> 
       <td><input type="text" name="esys[<?php echo $i; ?>][duration]" /></td> 
       <td><a href="#" class="button" onclick="esys_remove(<?php echo $i; ?>); return false;">X</a></td> 
      </tr> 
     </tbody> 
    </table> 
    <p align="right" style="padding:10px 0 5px; margin:0;"><a href="#" class="button" id="add-esys-file">Add</a></p> 
    <?php 

} 

function esys_get_files($ID) { 
    $data = unserialize(get_option("esys-files")); 
    return ($ID) ? $data[$ID] : $data; 
} 

function esys_delete() { 
    delete_option('esys-files'); 
} 

function esys_submit($post_ID) { 
    global $wpdb; 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
     return $post_id; 
    } 
    $data = esys_get_files($post_ID); 
    foreach((array)$_POST['esys'] as $file) { 
     $t[] = $file; 
     $data[$post_ID] = $t; 
    } 
    esys_update_files($data); 
} 

function esys_update_files($data) { 
    update_option('esys-files', serialize($data)); 
} 

function esys_admin_head() { 
    echo '<link type="text/css" rel="stylesheet" media="all" href="'.plugins_url('energy-systems-module/admin.css').'" />'."\n"; 
    echo '<script type="text/javascript" src="'.plugins_url('energy-systems-module/esys.js').'"></script>'."\n"; 
} 

add_action('admin_head', 'esys_admin_head'); 
add_action('admin_menu', 'esys_menus'); 
add_action('save_post', 'esys_submit'); 
?> 
+0

私はコードを微調整しました...彼女が動作するかどうかを確認します! –

答えて

0

問題は「オプション」としてデータを保存していたことでした。オプションテーブルは1つしかなく、複数の投稿にデータを添付しようとすると消去されていました。

メタデータを投稿する方法です。

+0

ああ、まだ起こっています。問題は、別の投稿にデータを保存しようとすると表示されます。最初の投稿からデータを消去します。 –

関連する問題