Intereting Posts
Как проверить совместимость плагина перед обновлением WordPress Как стилизовать предварительные просмотры / ссылки, не влияя на основные сообщения? Получение страницы через ее пост-имя с использованием WP REST API v2 и Postman Как скачать WordPress 4.2.0 Попытка подсчитать общее количество абзацев внутри статьи в блоге Скрыть определенные виджеты от определенных пользовательских ролей в admin Пользовательская кнопка «Вставить в сообщение» Перечислите таксономии в раскрывающемся списке панели параметров темы Слишком большая ошибка рекурсии при выборе изображения из библиотеки изображений для двух разных мета-полей в одном сообщении Создание пользовательского поля Номер телефона и биографическая информация в WooCommerce edit_account_form Ошибка при загрузке фотографий Плагин расширенных настраиваемых полей: как использовать флажок, чтобы сообщение отображалось в желаемой «зоне»? Должен ли я использовать nonce для ajax загруженных сообщений в frontend (public)? Разделить the_title Порядок WP_Query по дате в meta_value

Добавление пользовательских полей в меню навигации WordPress

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

приведенный ниже код показывает шаги для создания настраиваемого поля флажка>

он содержит любую ошибку?

сначала я создал ключ-ключ в базе данных

function YPE_setup_custom_fields($item) { $item->divider = get_post_meta($item->ID, '_menu_item_divider', true); } add_filter('wp_setup_nav_menu_item', 'YPE_setup_custom_fields'); 

то я создал для него значение обновления

 function YPE_update_custom_fields($menu_id, $menu_item_db_id, $menu_item_data) { if (is_array($_REQUEST['menu-item-divider'])) { $YPE_divider_value = $_REQUEST['menu-item-divider'][$menu_item_db_id]; update_post_meta($menu_item_db_id, '_menu_item_divider', $YPE_divider_value); } add_action('wp_update_nav_menu_item', 'YPE_update_custom_fields', 10, 3); 

то я создал новый класс (Walker_Nav_Menu_Edit_Custom)

 function YPE_edit_custom_walker($walker, $item_id) { return 'Walker_Nav_Menu_Edit_Custom'; } add_filter('wp_edit_nav_menu_walker', 'YPE_edit_custom_walker', 10, 2); 

то я добавил флажок в свой новый класс (Walker_Nav_Menu_Edit_Custom)

 <p class="field-link-divider description"> <label for="edit-menu-item-divider-<?php echo $item_id; ?>"> <input type="checkbox" id="edit-menu-item-divider-<?php echo $item_id; ?>" value="_blank" name="menu-item-divider[<?php echo $item_id; ?>]"<?php checked( $item->divider, '_blank' ); ?> /> <?php _e( 'Show divider' ); ?> </label> </p> 

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

когда мы используем update_post_meta для checked флажка. в то же время мы используем update_post_meta для update_post_meta с флажка

Я решил свою проблему, например, ниже. только я удалил сообщение meta, когда снял флажок

 function YPE_update_custom_fields($menu_id, $menu_item_db_id, $menu_item_data) { if (is_array($_REQUEST['menu-item-divider'])) { $YPE_divider_value = ; update_post_meta($menu_item_db_id, '_menu_item_divider', $_REQUEST['menu-item-divider'][$menu_item_db_id]); } else { delete_post_meta($menu_item_db_id, '_menu_item_divider'); } add_action('wp_update_nav_menu_item', 'YPE_update_custom_fields', 10, 3);