Intereting Posts
почему бы не изменить тело сайта после строки вставки на $ wpdb? Макет полной ширины для пользовательских страниц типа сообщения Плагин обновления WordPress через Dashboard / Plugins, отображающий ошибку Как удалить элемент из панели меню + Новое меню на основе роли пользователя Отправить теги между пользовательскими сообщениями в Admin Разработка защищенной формы редактирования переднего конца Лучшая практика для обработки сервера Получить комментарий по комментарию ID WordPress $ wpdb нет результата Как стиль RSS wordpress? WP_Query возвращает больше результатов, чем ожидалось Проблема с разбиением на страницы шаблонов пользовательских категорий 404 постоянных ошибок на страницах только Пользовательский тип сообщения со статической страницей для архива dropdowboxes с предварительно выбранными пользовательскими полями, которые фильтруют результаты в соответствии с потребностями seach

Как избежать <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 .