0
我创造了的WordPress主题允许用户选择按钮将链接,页面,通过使用网站中所有网页的下拉菜单中的小部件。WordPress的插件下拉菜单不保存选择
我使用wp_dropdown_pages()
来创建下拉菜单。
目前一切正常工作在网站的前端,但是当您保存小部件时,下拉菜单中所做的选择不会被保存。
add_action('widgets_init', 'app_button_widget');
function app_button_widget() {
register_widget('app_button_widget');
}
class app_button_widget extends WP_Widget {
function app_button_widget() {
$widget_ops = array('classname' => 'button-widget', 'description' => __('A widget that displays a button and supporting text ', 'example'));
$control_ops = array('width' => 300, 'height' => 350, 'id_base' => 'example-widget');
$this->WP_Widget('example-widget', __('Button Widget', 'example'), $widget_ops, $control_ops);
}
function widget($args, $instance) {
extract($args);
//Our variables from the widget settings.
$title = apply_filters('widget_title', $instance['title']);
$url = $instance['url'];
$text = $instance['text'];
$new_window = isset($instance['new_window']) ? $instance['new_window'] : false;
echo $before_widget;
if ($new_window)
$target = ('_blank');
// Display the widget title
if ($title)
echo '<p><a href="' . get_page_link($url) . '" target="'.$target.'"><button class="btn btn-large btn-danger span12" type="button">' . $title . '</button></a></p>';
//Display the name
if ($name)
printf('<p>' . $text . '</p>');
echo $after_widget;
}
//Update the widget
function update($new_instance, $old_instance) {
$instance = $old_instance;
//Strip tags from title and name to remove HTML
$instance['title'] = strip_tags($new_instance['title']);
$instance['url'] = strip_tags($new_instance['url']);
$instance['text'] = strip_tags($new_instance['text']);
$instance['new_window'] = ($new_instance['new_window']);
return $instance;
}
function form($instance) {
//Default widget settings.
$defaults = array('title' => __('Sample Button Text', 'example'), 'url' => __('URL the button will link to', 'example'), 'text' => __('Call to action text', 'example'), 'show_info' => true);
$instance = wp_parse_args((array) $instance, $defaults); ?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:', 'example'); ?></label>
<input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $instance['title']; ?>" style="width:90%;" />
</p>
<p>
<p>
<label for="<?php echo $this->get_field_id('url'); ?>"><?php _e('Target URL:'); ?></label>
<?php wp_dropdown_pages(array('id' => $this->get_field_id('url'),'name' => $this->get_field_name('url'))); ?>
</p>
</p>
<p>
<label for="<?php echo $this->get_field_id('text'); ?>"><?php _e('Text:', 'example'); ?></label>
<input id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>" value="<?php echo $instance['text']; ?>" style="width:100%;" />
</p>
<p>
<input class="checkbox" type="checkbox" <?php checked((bool) $instance['new_window'], true); ?> id="<?php echo $this->get_field_id('new_window'); ?>" name="<?php echo $this->get_field_name('new_window'); ?>" />
<label for="<?php echo $this->get_field_id('new_window'); ?>"><?php _e('Open link in a new tab', 'example'); ?></label>
</p>
<?php } ?>
如何保存选定的下拉值?