如何避免使用Custon Menu控件时添加的<div>和<ul>

时间:2013-12-02 作者:Zammuuz

我需要删除自定义菜单小部件

<div class="menu-main-container">
<ul id="main" class="menu">
从出现在<li>. 由于这两行代码,我的菜单显示不正确。我需要显示<li> 紧随其后的菜单列表<ul class="my_custom_class"> 但是现在,上面的行出现在my\\u自定义类和<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>

the above question is resolved.

1 个回复
最合适的回答,由SO网友:Chittaranjan 整理而成

你得到divul 是自定义菜单使用wp_nav_menu 生成输出。有两个参数(container、menu\\u class)的默认值为divmenu 分别地因此,您看到的输出具有divul 有课menu. 请看这里http://codex.wordpress.org/Function_Reference/wp_nav_menu

默认的自定义菜单不提供任何挂钩,因此我们可以动态更改输出。因此,我们必须创建一个类似的小部件,它将允许我们管理输出。请在活动主题的函数中输入以下代码。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 以便您可以设置classul. 你想上什么课都行my_custom_class 并保存小部件。现在,当您看到输出时,这将不会有任何div 之前自动生成的ul 将有一个你设置的新类。

你必须改变register_sidebar 密码现在不需要了my_custom_class 因为小部件将自动生成此。您可以有不同的html元素,如div 为了这个。

结束

相关推荐

Count > 1 Navigation Slider

我有一个帖子类型slider, 当您有多个帖子要显示导航时。我的代码:<?php $count_slider = wp_count_posts(\'slider\'); echo $count_slider->publish; ?> <?php if($count_slider > 1): ?> <div id=\"slideshowcontrol\" class=\"clearfi