Я пытаюсь создать виджет пользовательского меню, который имеет два столбца (т. Е. Я могу выбрать два разных меню и отображать их бок о бок в одном виджет боковой панели).Виджет пользовательского меню WordPress ==> изменение на 2-столбец
Я нашел tutorial о том, как создать текстовый виджет с двумя столбцами, однако я не могу понять, как редактировать функции виджета пользовательского меню, чтобы добавить и реализовать дополнительное меню - мои попытки создать дополнительную переменную меню (т. Е. , "$ menus1" и "$ menus2" ниже) перерывают WordPress (ошибка «неожиданной T-строки»).
Имеет ли массив «$ instance» заданный ключ с именем «nav_menu» или этот ключ и его значение, созданное функцией «form»? Если последнее, я могу определить ключи «nav_menu1» и «nav_menu2» (я пробовал это раньше, но также получил «непредвиденную строку T»)?
Любая помощь будет оценена по достоинству.
<?php
/**
* Custom Menu widget copied from default WP Widget Class and adjusted for 2-columns
*/
class SO_ABC_Tag_List_Widget_2col extends WP_Widget {
function __construct() {
$widget_ops = array('description' => __('By adding this widget you can select your alphabetical tags menu to display on your website.'));
parent::__construct('so_abc_tags_2col', __('SO ABC Tag List 2 col'), $widget_ops);
}
function widget($args, $instance) {
// Get menu
$nav_menu1 = ! empty($instance['nav_menu']) ? wp_get_nav_menu_object($instance['nav_menu']) : false;
$nav_menu2 = ! 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'] . '<i class="icon-tags"></i> ' . $instance['title'] . $args['after_title'];
<div style="float: left; width: 45%">
wp_nav_menu(array('fallback_cb' => '', 'menu' => $nav_menu1));
</div>
<div style="float: left; width: 45%"></div>
wp_nav_menu(array('fallback_cb' => '', 'menu' => $nav_menu2));
</div>
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'];
$instance['nav_menu'] = (int) $new_instance['nav_menu'];
return $instance;
}
function form($instance) {
$title = isset($instance['title']) ? $instance['title'] : '';
$nav_menu1 = isset($instance['nav_menu']) ? $instance['nav_menu'] : '';
$nav_menu2 = isset($instance['nav_menu']) ? $instance['nav_menu'] : '';
// Get menus
$menus1 = get_terms('nav_menu', array('hide_empty' => false));
$menus1 = get_terms('nav_menu', array('hide_empty' => false));
// If no menus exists, direct the user to go and create some.
if ((!$menus1 ) AND (!menus2)) {
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 ($menus1 as $menu1) {
echo '<option value="' . $menu1->term_id . '"'
. selected($nav_menu, $menu1->term_id, false)
. '>'. $menu1->name . '</option>';
}
?>
</select>
</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 ($menus2 as $menu2) {
echo '<option value="' . $menu2->term_id . '"'
. selected($nav_menu, $menu2->term_id, false)
. '>'. $menu2->name . '</option>';
}
?>
</select>
</p>
<?php
}
}