Intereting Posts
Транзакция при использовании функций WP, а не ванильного SQL? Показать массив meta_value в Редактировать сообщение Coloum Пользовательская таксономия ведет к 404 страницам – Постоянная ссылка Отображение категории WooCommerce на пользовательской странице Припаркованное доменное перенаправление на неверную страницу ошибки404 Изменить запрос WordPress Rest Api / Response Как получить генератор миниатюр для распознавания тега the_permalink? Установите размер шрифта автоматически в соответствии с количеством слов в сообщении Отображать пользовательские поля в профиле пользователя frontside Получение функции post_id в wp_ajax Форма контакта WordPress 7 Проверка размера изображения Странное поведение paginate_links. Ссылка на первую страницу всегда на той странице, на которой я нахожусь, все остальные ссылки верны Что вызывает ошибку «Вы уверены, что хотите это сделать?» С плагинами? Мигрируя блог WordPress в новые Webhosts, что-то добавляет # и тарабарщину Получать уведомление по электронной почте, когда на сайте wordpress возникает фатальная ошибка?

Как избежать <div> и <ul>, которые добавляются при использовании виджета custon menu

Мне нужно удалить пользовательский виджет меню

<div class="menu-main-container"> <ul id="main" class="menu"> 

от появляющегося выше <li> . Из-за этих двух строк мои меню не отображаются правильно, как я дал. Мне нужно отобразить список меню <li> сразу после <ul class="my_custom_class"> но теперь указанные строки появляются между классом my_custom и <li> .

Если мое объяснение непонятно, простите меня и спросите меня о каких-либо дополнительных разъяснениях.

исходный код:

 register_sidebar(array( 'name' => 'Top Menu', 'id' => 'topmenu-sidebar', 'description' => 'Appears as the sidebar on the all pages', 'before_widget' => '<ul class="my_custom_class">', 'after_widget' => '</ul>', 'before_title' => '<li>', 'after_title' => '</li>', )); 

вывод:

 <ul class="my_custom_class"> <div class="menu-main-container"> <ul id="menu-main" class="menu"> <li>....</li> 

Мне нужен вывод, как показано ниже: [как я удаляю div и ul. это мой вопрос]

 <ul class="my_custom_class"> <li>....</li> 

этот вопрос разрешен.

Solutions Collecting From Web of "Как избежать <div> и <ul>, которые добавляются при использовании виджета custon menu"

Причина, по которой вы получаете div и ul – это пользовательское меню, использующее wp_nav_menu которое генерирует результат. Существует 2 аргумента (контейнер, menu_class), которые имеют значения по умолчанию как div и menu соответственно. В результате вывод, который вы видите, имеет div и ul имеющие menu классов. Пожалуйста, посмотрите здесь http://codex.wordpress.org/Function_Reference/wp_nav_menu

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

 /** * WTI Custom Navigation Menu widget class * * @since 3.0.0 */ class Wti_Custom_Nav_Menu_Widget extends WP_Widget { function __construct() { $widget_ops = array( 'description' => __('Use this widget to add one of your custom menus as a widget.') ); parent::__construct( 'custom_nav_menu', __('WTI Custom Menu'), $widget_ops ); } function widget($args, $instance) { // Get menu $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false; if ( !$nav_menu ) return; $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base ); echo $args['before_widget']; if ( !empty($instance['title']) ) echo $args['before_title'] . $instance['title'] . $args['after_title']; wp_nav_menu( array( 'fallback_cb' => '', 'container' => '', 'menu_class' => $instance['menu_class'], 'menu' => $nav_menu ) ); echo $args['after_widget']; } function update( $new_instance, $old_instance ) { $instance['title'] = strip_tags ( stripslashes ( $new_instance['title'] ) ); $instance['menu_class'] = strip_tags ( stripslashes ( trim ( $new_instance['menu_class'] ) ) ); $instance['nav_menu'] = (int) $new_instance['nav_menu']; return $instance; } function form( $instance ) { $title = isset( $instance['title'] ) ? $instance['title'] : ''; $menu_class = isset( $instance['menu_class'] ) ? $instance['menu_class'] : ''; $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : ''; // Get menus $menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) ); // If no menus exists, direct the user to go and create some. if ( !$menus ) { echo '<p>'. sprintf( __('No menus have been created yet. <a href="%s">Create some</a>.'), admin_url('nav-menus.php') ) .'</p>'; return; } ?> <p> <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label> <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $title; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('menu_class'); ?>"><?php _e('Menu Class:') ?></label> <input type="text" class="widefat" id="<?php echo $this->get_field_id('menu_class'); ?>" name="<?php echo $this->get_field_name('menu_class'); ?>" value="<?php echo $menu_class; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Menu:'); ?></label> <select id="<?php echo $this->get_field_id('nav_menu'); ?>" name="<?php echo $this->get_field_name('nav_menu'); ?>"> <?php foreach ( $menus as $menu ) { echo '<option value="' . $menu->term_id . '"' . selected( $nav_menu, $menu->term_id, false ) . '>'. $menu->name . '</option>'; } ?> </select> </p> <?php } } function wti_custom_nav_menu_widget() { register_widget('Wti_Custom_Nav_Menu_Widget'); } add_action ( 'widgets_init', 'wti_custom_nav_menu_widget', 1 ); 

Теперь вы увидите новый виджет WTI Custom Menu на экране виджетов. Используйте этот виджет. У этого будет поле menu_class чтобы вы могли установить class ul . Вы можете поместить любой класс, который хотите, например, my_custom_class и сохранить виджет. Теперь, когда вы увидите вывод, у этого не будет никакого div который ранее был автоматически сгенерирован, и у ul будет новый класс по вашему усмотрению.

Вам придется изменить код register_sidebar . Теперь не нужно, чтобы my_custom_class поскольку виджет будет автоматически генерировать это. У вас может быть другой элемент html, например div .