你得到div
和ul
是自定义菜单使用wp_nav_menu
生成输出。有两个参数(container、menu\\u class)的默认值为div
和menu
分别地因此,您看到的输出具有div
和ul
有课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
以便您可以设置
class
的
ul
. 你想上什么课都行
my_custom_class
并保存小部件。现在,当您看到输出时,这将不会有任何
div
之前自动生成的
ul
将有一个你设置的新类。
你必须改变register_sidebar
密码现在不需要了my_custom_class
因为小部件将自动生成此。您可以有不同的html元素,如div
为了这个。