[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Widget API: WP_Widget_Links class 4 * 5 * @package WordPress 6 * @subpackage Widgets 7 * @since 4.4.0 8 */ 9 10 /** 11 * Core class used to implement a Links widget. 12 * 13 * @since 2.8.0 14 * 15 * @see WP_Widget 16 */ 17 class WP_Widget_Links extends WP_Widget { 18 19 /** 20 * Sets up a new Links widget instance. 21 * 22 * @since 2.8.0 23 */ 24 public function __construct() { 25 $widget_ops = array( 26 'description' => __( 'Your blogroll' ), 27 'customize_selective_refresh' => true, 28 ); 29 parent::__construct( 'links', __( 'Links' ), $widget_ops ); 30 } 31 32 /** 33 * Outputs the content for the current Links widget instance. 34 * 35 * @since 2.8.0 36 * 37 * @param array $args Display arguments including 'before_title', 'after_title', 38 * 'before_widget', and 'after_widget'. 39 * @param array $instance Settings for the current Links widget instance. 40 */ 41 public function widget( $args, $instance ) { 42 $show_description = isset( $instance['description'] ) ? $instance['description'] : false; 43 $show_name = isset( $instance['name'] ) ? $instance['name'] : false; 44 $show_rating = isset( $instance['rating'] ) ? $instance['rating'] : false; 45 $show_images = isset( $instance['images'] ) ? $instance['images'] : true; 46 $category = isset( $instance['category'] ) ? $instance['category'] : false; 47 $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name'; 48 $order = 'rating' === $orderby ? 'DESC' : 'ASC'; 49 $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1; 50 51 $before_widget = preg_replace( '/id="[^"]*"/', 'id="%id"', $args['before_widget'] ); 52 53 $widget_links_args = array( 54 'title_before' => $args['before_title'], 55 'title_after' => $args['after_title'], 56 'category_before' => $before_widget, 57 'category_after' => $args['after_widget'], 58 'show_images' => $show_images, 59 'show_description' => $show_description, 60 'show_name' => $show_name, 61 'show_rating' => $show_rating, 62 'category' => $category, 63 'class' => 'linkcat widget', 64 'orderby' => $orderby, 65 'order' => $order, 66 'limit' => $limit, 67 ); 68 69 /** 70 * Filters the arguments for the Links widget. 71 * 72 * @since 2.6.0 73 * @since 4.4.0 Added the `$instance` parameter. 74 * 75 * @see wp_list_bookmarks() 76 * 77 * @param array $widget_links_args An array of arguments to retrieve the links list. 78 * @param array $instance The settings for the particular instance of the widget. 79 */ 80 wp_list_bookmarks( apply_filters( 'widget_links_args', $widget_links_args, $instance ) ); 81 } 82 83 /** 84 * Handles updating settings for the current Links widget instance. 85 * 86 * @since 2.8.0 87 * 88 * @param array $new_instance New settings for this instance as input by the user via 89 * WP_Widget::form(). 90 * @param array $old_instance Old settings for this instance. 91 * @return array Updated settings to save. 92 */ 93 public function update( $new_instance, $old_instance ) { 94 $new_instance = (array) $new_instance; 95 $instance = array( 96 'images' => 0, 97 'name' => 0, 98 'description' => 0, 99 'rating' => 0, 100 ); 101 foreach ( $instance as $field => $val ) { 102 if ( isset( $new_instance[ $field ] ) ) { 103 $instance[ $field ] = 1; 104 } 105 } 106 107 $instance['orderby'] = 'name'; 108 if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ), true ) ) { 109 $instance['orderby'] = $new_instance['orderby']; 110 } 111 112 $instance['category'] = (int) $new_instance['category']; 113 $instance['limit'] = ! empty( $new_instance['limit'] ) ? (int) $new_instance['limit'] : -1; 114 115 return $instance; 116 } 117 118 /** 119 * Outputs the settings form for the Links widget. 120 * 121 * @since 2.8.0 122 * 123 * @param array $instance Current settings. 124 */ 125 public function form( $instance ) { 126 127 // Defaults. 128 $instance = wp_parse_args( 129 (array) $instance, 130 array( 131 'images' => true, 132 'name' => true, 133 'description' => false, 134 'rating' => false, 135 'category' => false, 136 'orderby' => 'name', 137 'limit' => -1, 138 ) 139 ); 140 $link_cats = get_terms( array( 'taxonomy' => 'link_category' ) ); 141 $limit = (int) $instance['limit']; 142 if ( ! $limit ) { 143 $limit = -1; 144 } 145 ?> 146 <p> 147 <label for="<?php echo $this->get_field_id( 'category' ); ?>"><?php _e( 'Select Link Category:' ); ?></label> 148 <select class="widefat" id="<?php echo $this->get_field_id( 'category' ); ?>" name="<?php echo $this->get_field_name( 'category' ); ?>"> 149 <option value=""><?php _ex( 'All Links', 'links widget' ); ?></option> 150 <?php foreach ( $link_cats as $link_cat ) : ?> 151 <option value="<?php echo (int) $link_cat->term_id; ?>" <?php selected( $instance['category'], $link_cat->term_id ); ?>> 152 <?php echo esc_html( $link_cat->name ); ?> 153 </option> 154 <?php endforeach; ?> 155 </select> 156 <label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><?php _e( 'Sort by:' ); ?></label> 157 <select name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>" class="widefat"> 158 <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option> 159 <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option> 160 <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option> 161 <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _ex( 'Random', 'Links widget' ); ?></option> 162 </select> 163 </p> 164 165 <p> 166 <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' ); ?>" /> 167 <label for="<?php echo $this->get_field_id( 'images' ); ?>"><?php _e( 'Show Link Image' ); ?></label> 168 <br /> 169 170 <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' ); ?>" /> 171 <label for="<?php echo $this->get_field_id( 'name' ); ?>"><?php _e( 'Show Link Name' ); ?></label> 172 <br /> 173 174 <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' ); ?>" /> 175 <label for="<?php echo $this->get_field_id( 'description' ); ?>"><?php _e( 'Show Link Description' ); ?></label> 176 <br /> 177 178 <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' ); ?>" /> 179 <label for="<?php echo $this->get_field_id( 'rating' ); ?>"><?php _e( 'Show Link Rating' ); ?></label> 180 </p> 181 182 <p> 183 <label for="<?php echo $this->get_field_id( 'limit' ); ?>"><?php _e( 'Number of links to show:' ); ?></label> 184 <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" /> 185 </p> 186 <?php 187 } 188 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Nov 21 01:00:03 2024 | Cross-referenced by PHPXref 0.7.1 |