<?php class WP_Widget_Links extends WP_Widget { public function __construct() { $widget_ops = array('description' => __('Your blogroll'), 'customize_selective_refresh' => true); parent::__construct('links', __('Links'), $widget_ops); } public function widget($args, $instance) { $show_description = isset($instance['description']) ? $instance['description'] : false; $show_name = isset($instance['name']) ? $instance['name'] : false; $show_rating = isset($instance['rating']) ? $instance['rating'] : false; $show_images = isset($instance['images']) ? $instance['images'] : true; $category = isset($instance['category']) ? $instance['category'] : false; $orderby = isset($instance['orderby']) ? $instance['orderby'] : 'name'; $order = 'rating' === $orderby ? 'DESC' : 'ASC'; $limit = isset($instance['limit']) ? $instance['limit'] : -1; $before_widget = preg_replace('/id="[^"]*"/', 'id="%id"', $args['before_widget']); $widget_links_args = array('title_before' => $args['before_title'], 'title_after' => $args['after_title'], 'category_before' => $before_widget, 'category_after' => $args['after_widget'], 'show_images' => $show_images, 'show_description' => $show_description, 'show_name' => $show_name, 'show_rating' => $show_rating, 'category' => $category, 'class' => 'linkcat widget', 'orderby' => $orderby, 'order' => $order, 'limit' => $limit); wp_list_bookmarks(apply_filters('widget_links_args', $widget_links_args, $instance)); } public function update($new_instance, $old_instance) { $new_instance = (array) $new_instance; $instance = array('images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0); foreach ($instance as $field => $val) { if (isset($new_instance[$field])) { $instance[$field] = 1; } } $instance['orderby'] = 'name'; if (in_array($new_instance['orderby'], array('name', 'rating', 'id', 'rand'), true)) { $instance['orderby'] = $new_instance['orderby']; } $instance['category'] = (int) $new_instance['category']; $instance['limit'] = !empty($new_instance['limit']) ? (int) $new_instance['limit'] : -1; return $instance; } public function form($instance) { $instance = wp_parse_args((array) $instance, array('images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1)); $link_cats = get_terms(array('taxonomy' => 'link_category')); $limit = (int) $instance['limit']; if (!$limit) { $limit = -1; } ?> <p> <label for="<?php echo $this->get_field_id('category'); ?>"><?php _e('Select Link Category:'); ?></label> <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>"> <option value=""><?php _ex('All Links', 'links widget'); ?></option> <?php foreach ($link_cats as $link_cat) { ?> <option value="<?php echo (int) $link_cat->term_id; ?>" <?php selected($instance['category'], $link_cat->term_id); ?>> <?php echo esc_html($link_cat->name); ?> </option> <?php } ?> </select> <label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e('Sort by:'); ?></label> <select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat"> <option value="name"<?php selected($instance['orderby'], 'name'); ?>><?php _e('Link title'); ?></option> <option value="rating"<?php selected($instance['orderby'], 'rating'); ?>><?php _e('Link rating'); ?></option> <option value="id"<?php selected($instance['orderby'], 'id'); ?>><?php _e('Link ID'); ?></option> <option value="rand"<?php selected($instance['orderby'], 'rand'); ?>><?php _ex('Random', 'Links widget'); ?></option> </select> </p> <p> <input class="checkbox" type="checkbox"<?php checked($instance['images'], true); ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" /> <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label> <br /> <input class="checkbox" type="checkbox"<?php checked($instance['name'], true); ?> id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" /> <label for="<?php echo $this->get_field_id('name'); ?>"><?php _e('Show Link Name'); ?></label> <br /> <input class="checkbox" type="checkbox"<?php checked($instance['description'], true); ?> id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" /> <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Show Link Description'); ?></label> <br /> <input class="checkbox" type="checkbox"<?php checked($instance['rating'], true); ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" /> <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label> </p> <p> <label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e('Number of links to show:'); ?></label> <input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo -1 !== $limit ? (int) $limit : ''; ?>" size="3" /> </p> <?php } }