2011-01-17 28 views
0

Ich arbeite an einem einfachen Stecker, mit dem ich Paare von Werten mit einem Beitrag speichern kann; Es gibt ein bisschen JS, um Paarungen hinzuzufügen oder zu löschen. Alles funktioniert gut, aber zufällige Daten werden verschwinden. Ich bin mir nicht sicher, ob es ein Problem mit dem automatischen Speichern oder was ist, aber ich hatte gedacht, dass ich das berücksichtigt habe.Wordpress Plugin Daten verschwinden

Irgendwelche Ideen, warum meine Daten speichern, aber zufällig verschwinden?

<?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

Ich habe den Code optimiert ... wir werden sehen, ob sie funktioniert! –

Antwort

0

Das Problem lag darin, Daten als "Optionen" zu speichern. Es gibt nur eine Optionstabelle, und wie sich herausstellt, wurde sie beim Versuch, Daten an mehr als einen Beitrag anzuhängen, gelöscht.

Post-Metadaten ist der Weg zu gehen.

+0

Ahh, immer noch passiert. Das Problem tritt auf, wenn ich versuche, Daten in einem anderen Post zu speichern. Es löscht Daten aus dem ersten Post. –