[wp-trac] [WordPress Trac] #62884: Total error otimization in nav-menu.js

WordPress Trac noreply at wordpress.org
Thu Jan 30 09:07:50 UTC 2025


#62884: Total error otimization in nav-menu.js
--------------------------+-----------------------------
 Reporter:  iallixey      |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Menus         |    Version:  6.7.1
 Severity:  normal        |   Keywords:  needs-refresh
  Focuses:                |
--------------------------+-----------------------------
 Обнаружен баг, подробности тут
 https://ru.wordpress.org/support/topic/total-error-otimization-in-nav-
 menu-js/#post-12237511

 800 элементов навигационного меню создают проблему зависания страницы и
 неудобство использования — 800 это правильное решение в нашем случае,
 новый Муниципальный сайт, это уже далеко не блог 🙂 В нашем случае острая
 необходимость в том чтобы меню было хорошее и работало правильно.

 Точно Вам говорю это не из-за Max Mega Menu, кто то из разработчиков
 упустил этот критически важный момент, в который упираются все серьёзные
 пользователи системы WordPress.

 Виновник испорченного кода в 6.7.1 … class-walker-nav-menu-edit.php (

             <div class="field-move-combo description-group">
                 <p class="description description-wide">
                     <label for="edit-menu-item-parent-<?php echo $item_id;
 ?>">
                         <?php _e( 'Menu Parent' ); ?>
                     </label>
                     <select class="edit-menu-item-parent widefat" id
 ="edit-menu-item-parent-<?php echo $item_id; ?>" name="menu-item-
 parent[<?php echo $item_id; ?>]">
                     </select>
                 </p>
                 <p class="description description-wide">
                     <label for="edit-menu-item-order-<?php echo $item_id;
 ?>">
                         <?php _e( 'Menu Order' ); ?>
                     </label>
                     <select class="edit-menu-item-order widefat" id="edit-
 menu-item-order-<?php echo $item_id; ?>" name="menu-item-order[<?php echo
 $item_id; ?>]">
                     </select>
                 </p>
             </div>

 в этот edit-menu-item-parent и edit-menu-item-order загружается вся
 структура существующего меню (повторение 800). Т.е. каждый пункт меню
 содержит в себе select с повторением 800 итого 800*800=640000 и все это
 для javascript вызывает нагрузку до 10 минут для отображения страницы… 🙁

 Я исправил эту ошибку — время формировнаия страницы редактирования меню от
 9 до 20 секунд(!) Ура победа.

 В итоге перешел на новую версию 6.7.1 (она мне нравиться чистотой кода и
 скоростью), но сделал следующие исправления

 30/01/2025

 Действие: Replace nav-menu object (all code files) in 6.7.1 from 6.6.2
 Результат: Исправлена ошибка зависания интерфейса редактирования элементов
 меню, которая проявляется с версии 6.7

 \iwa.toprayon.ru\mnt\toprayon.ru\wp-admin\includes
 class-walker-nav-menu-edit.php (файл вывода формы html шаблон)

             <p class="field-link-target description" style="display:none">
                 <label for="edit-menu-item-target-<?php echo $item_id;
 ?>">
                     <input type="checkbox" id="edit-menu-item-target-<?php
 echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo
 $item_id; ?>]"<?php checked( $menu_item->target, '_blank' ); ?> />
                     <?php _e( 'Open link in a new tab' ); ?>
                 </label>
             </p>

                 <span style="display:none">
                 <button type="button" class="button-link menus-move menus-
 move-left" data-dir="left"></button>
                 <button type="button" class="button-link menus-move menus-
 move-right" data-dir="right"></button>
                 </span>
 \iwa.toprayon.ru\mnt\toprayon.ru\wp-admin
 nav-menus.php

 \iwa.toprayon.ru\mnt\toprayon.ru\wp-admin\js
 nav-menu.js
 nav-menu.min.js

 \iwa.toprayon.ru\mnt\toprayon.ru\wp-includes
 nav-menu.php
 nav-menu-template.php
 class-walker-nav-menu.php

 ***************************************************************************

 ПРЕДЛАГАЮ СДЕЛАТЬ ВЕСЬ ИНТЕРФЕЙС РЕДАКТИРОВАНИЯ НАВИГАЦИОННОГО МЕНЮ НА
 AJAX событиях. Не удаляйте интерфейс редактирования навигационного меню —
 это правильный путь, порядок, ядро, удобство для разработчиков и конечных
 пользователей.

 С уважением, Алексей

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/62884>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list