Intereting Posts
Изменение изображения заголовка Каждые N минут / секунд get_users meta_query: REGEXP не работает для соответствия новым строкам Проверьте, если страница является дочерней и имеет дочерние элементы, если так, что и дочерние страницы эха на страницах внуков Форматирование числовых символов в заголовках В каких условиях Могу ли я назвать свой CPT такой же, как моя страница CPT? Как отключить возможность комментариев WordPress для захвата IP-адреса пользователей? Как получить администратор сайта по идентификатору блога Когда get_template_part () предпочтительнее простого использования файлов template.php? Проблема с пользовательскими тегами типа сообщения Есть ли способ интегрировать WordPress с Imgur для хостинга изображений? Должно ли все функции functions.php подключаться или фильтроваться? Множество циклов внутри функции Продукт Woocommerce не работает Новое сообщение об ошибке WordPress – не видели этого раньше Как отобразить открытый профиль пользователя с двумя дополнительными полями? (Включая исходный код GitHub)

WordPress: Сортируемые поля Metabox не сохраняют позицию

Я столкнулся с проблемой, которая меня озадачила: после обновления до WP 3.6 мои отсортированные поля метабокса не сохраняют свою позицию при их повторном заказе. Ниже мой код:

PHP:

function save_box( $post_id ) { $post_type = get_post_type(); // verify nonce if ( ! isset( $_POST['custom_meta_box_nonce_field'] ) ) return $post_id; if ( ! ( in_array( $post_type, $this->page ) || wp_verify_nonce( $_POST['custom_meta_box_nonce_field'], 'custom_meta_box_nonce_action' ) ) ) return $post_id; // check autosave if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return $post_id; // check permissions if ( ! current_user_can( 'edit_page', $post_id ) ) return $post_id; // loop through fields and save the data foreach ( $this->fields as $field ) { if( $field['type'] == 'section' ) { $sanitizer = null; continue; } if( in_array( $field['type'], array( 'tax_select', 'tax_checkboxes' ) ) ) { // save taxonomies if ( isset( $_POST[$field['id']] ) ) { $term = $_POST[$field['id']]; wp_set_object_terms( $post_id, $term, $field['id'] ); } } else { // save the rest $old = get_post_meta( $post_id, $field['id'], $field['type'], true ); if ( isset( $_POST[$field['id']] ) ) $new = $_POST[$field['id']]; if ( isset( $new ) && $new != $old ) { $sanitizer = isset( $field['sanitizer'] ) ? $field['sanitizer'] : 'sanitize_text_field'; if ( is_array( $new ) ) $new = meta_box_array_map_r( 'meta_box_sanitize', $new, $sanitizer ); else $new = meta_box_sanitize( $new, $sanitizer ); update_post_meta( $post_id, $field['id'], $new ); } elseif ( isset( $new ) && '' == $new && $old ) { delete_post_meta( $post_id, $field['id'], $old ); } } } // end foreach } 

JQuery:

 $('.meta_box_repeatable tbody').sortable({ opacity: 0.6, revert: true, cursor: 'move', handle: '.hndle' }); // post_drop_sort $('.sort_list').sortable({ connectWith: '.sort_list', opacity: 0.6, revert: true, cursor: 'move', cancel: '.post_drop_sort_area_name', items: 'li:not(.post_drop_sort_area_name)', update: function(event, ui) { var result = $(this).sortable('toArray'); var thisID = $(this).attr('id'); $('.store-' + thisID).val(result) } }); $('.sort_list').disableSelection(); 

То, что у меня есть, – это метабокс, который содержит повторяемую рамку, внутри повторяемого окна – кнопка загрузки изображения и ввод текста субтитров. Все работает отлично, я могу добавить больше повторяемости и отсортировать их, но когда я сохраняю сообщение, повторяемые возвращаются в исходное положение.

Если кто-нибудь захочет, я могу дать вам данные для входа, чтобы посмотреть живую версию.

Любая помощь будет принята с благодарностью.

Solutions Collecting From Web of "WordPress: Сортируемые поля Metabox не сохраняют позицию"

Обычно этого достаточно, чтобы просто поставить в postsbox сценарий postsbox на странице, где вы хотите иметь отсортированные мета-поля.

Просто выполните следующие действия:

 add_action( 'admin_enqueue_scripts', 'wpse112022_postbox_enqueue' ); function wpse112022_postbox_enqueue( $hook_suffix ) { // uncomment the next line to see what the $hook_suffix of your desired page is # var_dump( $hook_suffix ); if ( 'hook_suffix of desired page' !== $hook_suffix ) return; wp_enqueue_script( 'postbox' ); // If the last line didn't enqueue the script, then uncomment the following instead: /* $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; wp_enqueue_script( 'postbox', "/wp-admin/js/postbox{$suffix}.js", array( 'jquery-ui-sortable' ), false true ); */ }