Override custom menu widget

时间:2014-05-21 作者:fefe

我想覆盖一些标记和css(如<div class="soma_container"><ul class=""></ul></div>)在选定的自定义菜单小部件上设置样式。我该怎么做?应作为主导航钩挂在functions.php 或者如果有关于这方面的好教程,我会非常感激

我想我可以在widget poition init上做一些事情

  register_sidebar(array(
    \'name\'          => __(\'Sidebar Menu\', \'roots\'),
    \'id\'            => \'sidebar-primary\',
    \'before_widget\' => \'<section class="widget %1$s %2$s">\',
    \'after_widget\'  => \'</section>\',
    \'before_title\'  => \'<h3>\',
    \'after_title\'   => \'</h3>\',
  ));
但是如何覆盖自定义菜单的列表css

2 个回复
最合适的回答,由SO网友:Matt Royal 整理而成

好了,开始吧。我为您扩展了默认导航小部件。将此添加到主题函数文件中。完成此操作后,转到仪表板中的小部件,现在将看到一个名为“Matt Royal自定义菜单”的小部件。使用这个。

在下面的代码中,已经按照指定添加了div类,您可以使用wp\\u nav\\u menu($args)函数中的任何参数。您可以在WordPress Codex上找到可以传递给它的所有参数:http://codex.wordpress.org/Function_Reference/wp_nav_menu

// MattRoyal Custom Navigation Menu widget class

     class Royal_Nav_Menu_Widget extends WP_Widget {

        function Royal_Nav_Menu_Widget() {
            $widget_ops = array( \'description\' => __(\'Add a custom menu to your sidebar.\') );
            parent::__construct( \'nav_menu\', __(\'Matt Royal 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;

            /** This filter is documented in wp-includes/default-widgets.php */
            $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\' => \'\', \'menu\' => $nav_menu, \'container_class\' => \'soma_container\', \'menu_class\' => \'some_list\', ) );

            echo $args[\'after_widget\'];
        }

        function update( $new_instance, $old_instance ) {
            $instance[\'title\'] = strip_tags( stripslashes($new_instance[\'title\']) );
            $instance[\'nav_menu\'] = (int) $new_instance[\'nav_menu\'];
            return $instance;
        }

        function form( $instance ) {
            $title = isset( $instance[\'title\'] ) ? $instance[\'title\'] : \'\';
            $nav_menu = isset( $instance[\'nav_menu\'] ) ? $instance[\'nav_menu\'] : \'\';

            // Get menus
            $menus = wp_get_nav_menus( array( \'orderby\' => \'name\' ) );

            // 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(\'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\'); ?>">
                    <option value="0"><?php _e( \'&mdash; Select &mdash;\' ) ?></option>
            <?php
                foreach ( $menus as $menu ) {
                    echo \'<option value="\' . $menu->term_id . \'"\'
                        . selected( $nav_menu, $menu->term_id, false )
                        . \'>\'. esc_html( $menu->name ) . \'</option>\';
                }
            ?>
                </select>
            </p>
            <?php
        }
    }

    add_action(\'widgets_init\', create_function(\'\', \'return register_widget("Royal_Nav_Menu_Widget");\'));

SO网友:Matt Royal

如果不扩展默认小部件并从中创建您自己的自定义小部件,我不确定您是否可以做到这一点。

这是一个plugin 这允许在这里进行大量的控制,并且应该对您想要做的事情起作用。

结束

相关推荐

加载AJAX后,WP视频媒体播放器无法加载正确的CSS

我有一篇使用WP的帖子[video] 显示我的视频文件的快捷码。应该是这样的:但看起来是这样的:在我单击“加载更多帖子”之后,AJAX调用。在我点击帖子后,视频播放器将看起来像我想要的样子。只有当文章加载了AJAX时,才会出现这样的情况。谁能告诉我怎么了?谢谢