Intereting Posts
WordPress 4.8 – Невозможно найти переменную: wp Отключить панель администратора Как получить сгенерированную строку запроса wp_remote_get? Использование meta_query и настраиваемых полей в pre_get_posts для возврата сообщений в числовом диапазоне Какова наилучшая практика для отображения моего содержимого плагина в темах? Проверка содержимого сообщения для короткого кода, но содержимое возвращается как пустое Почему плагин WordPress Twitter Tools дает 500 внутренних ошибок сервера? создание настраиваемого мета-поля со значением по умолчанию Как иметь годовые версии одного и того же сайта с различным контентом (например, ежегодные конференции)? Изменение пользовательского типа URL-адреса get_post_meta просто возвращает массив Скопируйте файл из плагина в каталог темы Не удалось сохранить обычное мета-поле datetime с помощью функции update_post_meta () Не удалось добавить уведомление администратора о активации плагина Получить метаданные пользователя meta вместо ID

Как зарегистрировать пользовательский виджет меню

Я пытаюсь зарегистрировать виджет пользовательского меню программно с помощью wp_register_sidebar_widget , но он не отображается в wordpress. Я использую удаленный вызов этого метода (xml-rpc). Ссылаясь на codex, я передаю параметры таким образом:

 wp_register_sidebar_widget( 'custom_menu_widget-1', 'My name', 'WP_Nav_Menu_Widget', array( 'description' => 'blogroll' ) ); 

Он должен создать собственный виджет меню под названием «Мое имя», но он ничего не регистрирует. Я думаю, что третий параметр $output_callback может быть неправильным, но я не могу найти нигде, какой обратный вызов должен быть для пользовательских меню. У меня нет выхода или ошибки из этого вызова, поэтому я не вижу, что не так. Может быть, я что-то пропустил или есть другой способ зарегистрировать виджет пользовательского меню? Я не хочу редактировать function.php, я просто хочу зарегистрировать стандартный пользовательский виджет меню с использованием методов wp.

Solutions Collecting From Web of "Как зарегистрировать пользовательский виджет меню"

Попробуйте этот код (в function.php )

 class MyWidget extends WP_Widget { function __construct() { $widget_ops = array( 'description' => __('Use this widget to add one of your custom menu as a link list widget.') ); parent::__construct( 'custom_menu_widget-1', __('My name'), $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( 'menu' => $nav_menu) ); 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 = 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('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 ) { $selected = $nav_menu == $menu->term_id ? ' selected="selected"' : ''; echo '<option'. $selected .' value="'. $menu->term_id .'">'. $menu->name .'</option>'; } ?> </select> </p> <?php } } add_action( 'widgets_init', 'myplugin_register_widgets' ); function myplugin_register_widgets() { register_widget( 'MyWidget' ); }