Sortierbares benutzerdefiniertes Meta speichert die Kontrollkästchenwerte nicht korrekt

Ich mache ein Plugin, das einen benutzerdefinierten Beitragstyp enthält, “Alben”, und ich habe sortierbare benutzerdefinierte Metas implementiert, um jedem Beitrag eine Liedliste hinzuzufügen, die Lieder hinzugefügt oder entfernt haben kann und sie per Drag & Drop verschoben werden können Reihenfolge, in der sie angezeigt werden. Dies basiert auf diesem corepunkt , aber ich habe ein Kontrollkästchen hinzugefügt, um zu bestimmen, ob der Song als Single erhältlich ist.

Das Problem, das ich habe, ist, dass es die Reihenfolge der Kontrollkästchenwerte beim Veröffentlichen oder Speichern nicht korrekt speichert und die Werte an den Anfang der Songliste verschiebt. Also, du hast gerade ein Album mit 5 Songs erstellt und du hast den zweiten und vierten Song als zum Kauf verfügbar angesehen . Wenn Sie den Albumbeitrag veröffentlichen und aktualisieren und die Seite aktualisiert wird, werden das erste und zweite Kontrollkästchen anstelle des zweiten und vierten angekreuzt. Alle anderen Metas bleiben in der richtigen Reihenfolge.

Ich bin mir ziemlich sicher, dass das Problem bei diesem Code liegt, den ich hinzugefügt habe, um das Speichern der Checkbox-Werte zu übernehmen:

if ( $available_for_purchase[$i] == true ) $new[$i]['available_for_purchase'] = true; 

Ich habe es auch mit einem anderen versucht …

 if ( $available_for_purchase[$i] == true ) $new[$i]['available_for_purchase'] = true; else $new[$i]['available_for_purchase'] = false; 

… aber das macht das Gleiche.

Weiß jemand, wie ich sie in der richtigen Reihenfolge speichern kann?

Hier ist mein Code in vollem scope:

 add_action('admin_init', 'add_meta_boxes', 1); function add_meta_boxes() { add_meta_box( 'repeatable-fields', 'Songs', 'repeatable_meta_box_display', 'albums', 'normal', 'high'); } function repeatable_meta_box_display() { global $post; $repeatable_fields = get_post_meta($post->ID, 'repeatable_fields', true); wp_nonce_field( 'repeatable_meta_box_nonce', 'repeatable_meta_box_nonce' ); ?>  jQuery(document).ready(function($) { $('.metabox_submit').click(function(e) { e.preventDefault(); $('#publish').click(); }); $('#add-row').on('click', function() { var row = $('.empty-row.screen-reader-text').clone(true); row.removeClass('empty-row screen-reader-text'); row.insertBefore('#repeatable-fieldset-one tbody>tr:last'); return false; }); $('.remove-row').on('click', function() { $(this).parents('tr').remove(); return false; }); $('#repeatable-fieldset-one tbody').sortable({ opacity: 0.6, revert: true, cursor: 'row-resize', handle: '.sort' }); });  
Name Image Link Available for purchase
- <input type="text" class="widefat" name="name[]" value="" /> <input type="text" class="widefat" name="image[]" value="" /> <input type="text" class="widefat" name="url[]" value="" /> <input type="checkbox" name="available_for_purchase[]" checked="checked" /> |||
- |||
- |||

Add another

<?php } add_action('save_post', 'repeatable_meta_box_save'); function repeatable_meta_box_save($post_id) { if ( ! isset( $_POST['repeatable_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['repeatable_meta_box_nonce'], 'repeatable_meta_box_nonce' ) ) return; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if (!current_user_can('edit_post', $post_id)) return; $old = get_post_meta($post_id, 'repeatable_fields', true); $new = array(); $names = $_POST['name']; $urls = $_POST['url']; $available_for_purchase = $_POST['available_for_purchase']; $count = count( $names ); for ( $i = 0; $i < $count; $i++ ) { if ( $names[$i] != '' ) : $new[$i]['name'] = stripslashes( strip_tags( $names[$i] ) ); if ( $urls[$i] == 'http://' ) $new[$i]['url'] = ''; else $new[$i]['url'] = stripslashes( $urls[$i] ); // and however you want to sanitize if ( $available_for_purchase[$i] == true ) $new[$i]['available_for_purchase'] = true; endif; } if ( !empty( $new ) && $new != $old ) update_post_meta( $post_id, 'repeatable_fields', $new ); elseif ( empty($new) && $old ) delete_post_meta( $post_id, 'repeatable_fields', $old ); }

Solutions Collecting From Web of "Sortierbares benutzerdefiniertes Meta speichert die Kontrollkästchenwerte nicht korrekt"