[ Index ] |
WordPress Cross Reference |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Custom Widget for displaying specific post formats 4 * 5 * Displays posts from Aside, Quote, Video, Audio, Image, Gallery, and Link formats. 6 * 7 * @link http://codex.wordpress.org/Widgets_API#Developing_Widgets 8 * 9 * @package WordPress 10 * @subpackage Twenty_Fourteen 11 * @since Twenty Fourteen 1.0 12 */ 13 14 class Twenty_Fourteen_Ephemera_Widget extends WP_Widget { 15 16 /** 17 * The supported post formats. 18 * 19 * @access private 20 * @since Twenty Fourteen 1.0 21 * 22 * @var array 23 */ 24 private $formats = array( 'aside', 'image', 'video', 'audio', 'quote', 'link', 'gallery' ); 25 26 /** 27 * Pluralized post format strings. 28 * 29 * @access private 30 * @since Twenty Fourteen 1.0 31 * 32 * @var array 33 */ 34 private $format_strings; 35 36 /** 37 * Constructor. 38 * 39 * @since Twenty Fourteen 1.0 40 * 41 * @return Twenty_Fourteen_Ephemera_Widget 42 */ 43 public function __construct() { 44 parent::__construct( 'widget_twentyfourteen_ephemera', __( 'Twenty Fourteen Ephemera', 'twentyfourteen' ), array( 45 'classname' => 'widget_twentyfourteen_ephemera', 46 'description' => __( 'Use this widget to list your recent Aside, Quote, Video, Audio, Image, Gallery, and Link posts', 'twentyfourteen' ), 47 ) ); 48 49 /* 50 * @todo http://core.trac.wordpress.org/ticket/23257: Add plural versions of Post Format strings 51 */ 52 $this->format_strings = array( 53 'aside' => __( 'Asides', 'twentyfourteen' ), 54 'image' => __( 'Images', 'twentyfourteen' ), 55 'video' => __( 'Videos', 'twentyfourteen' ), 56 'audio' => __( 'Audio', 'twentyfourteen' ), 57 'quote' => __( 'Quotes', 'twentyfourteen' ), 58 'link' => __( 'Links', 'twentyfourteen' ), 59 'gallery' => __( 'Galleries', 'twentyfourteen' ), 60 ); 61 } 62 63 /** 64 * Output the HTML for this widget. 65 * 66 * @access public 67 * @since Twenty Fourteen 1.0 68 * 69 * @param array $args An array of standard parameters for widgets in this theme. 70 * @param array $instance An array of settings for this widget instance. 71 * @return void Echoes its output. 72 */ 73 public function widget( $args, $instance ) { 74 $format = $instance['format']; 75 $number = empty( $instance['number'] ) ? 2 : absint( $instance['number'] ); 76 $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? $this->format_strings[ $format ] : $instance['title'], $instance, $this->id_base ); 77 78 $ephemera = new WP_Query( array( 79 'order' => 'DESC', 80 'posts_per_page' => $number, 81 'no_found_rows' => true, 82 'post_status' => 'publish', 83 'post__not_in' => get_option( 'sticky_posts' ), 84 'tax_query' => array( 85 array( 86 'taxonomy' => 'post_format', 87 'terms' => array( "post-format-$format" ), 88 'field' => 'slug', 89 'operator' => 'IN', 90 ), 91 ), 92 ) ); 93 94 if ( $ephemera->have_posts() ) : 95 $tmp_content_width = $GLOBALS['content_width']; 96 $GLOBALS['content_width'] = 306; 97 98 echo $args['before_widget']; 99 ?> 100 <h1 class="widget-title <?php echo esc_attr( $format ); ?>"> 101 <a class="entry-format" href="<?php echo esc_url( get_post_format_link( $format ) ); ?>"><?php echo $title; ?></a> 102 </h1> 103 <ol> 104 105 <?php while ( $ephemera->have_posts() ) : $ephemera->the_post(); ?> 106 <li> 107 <article <?php post_class(); ?>> 108 <div class="entry-content"> 109 <?php 110 if ( has_post_format( 'gallery' ) ) : 111 112 if ( post_password_required() ) : 113 the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyfourteen' ) ); 114 else : 115 $images = array(); 116 117 $galleries = get_post_galleries( get_the_ID(), false ); 118 if ( isset( $galleries[0]['ids'] ) ) 119 $images = explode( ',', $galleries[0]['ids'] ); 120 121 if ( ! $images ) : 122 $images = get_posts( array( 123 'fields' => 'ids', 124 'numberposts' => -1, 125 'order' => 'ASC', 126 'orderby' => 'menu_order', 127 'post_mime_type' => 'image', 128 'post_parent' => get_the_ID(), 129 'post_type' => 'attachment', 130 ) ); 131 endif; 132 133 $total_images = count( $images ); 134 135 if ( has_post_thumbnail() ) : 136 $post_thumbnail = get_the_post_thumbnail(); 137 elseif ( $total_images > 0 ) : 138 $image = array_shift( $images ); 139 $post_thumbnail = wp_get_attachment_image( $image, 'post-thumbnail' ); 140 endif; 141 142 if ( ! empty ( $post_thumbnail ) ) : 143 ?> 144 <a href="<?php the_permalink(); ?>"><?php echo $post_thumbnail; ?></a> 145 <?php endif; ?> 146 <p class="wp-caption-text"> 147 <?php 148 printf( _n( 'This gallery contains <a href="%1$s" rel="bookmark">%2$s photo</a>.', 'This gallery contains <a href="%1$s" rel="bookmark">%2$s photos</a>.', $total_images, 'twentyfourteen' ), 149 esc_url( get_permalink() ), 150 number_format_i18n( $total_images ) 151 ); 152 ?> 153 </p> 154 <?php 155 endif; 156 157 else : 158 the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentyfourteen' ) ); 159 endif; 160 ?> 161 </div><!-- .entry-content --> 162 163 <header class="entry-header"> 164 <div class="entry-meta"> 165 <?php 166 if ( ! has_post_format( 'link' ) ) : 167 the_title( '<h1 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h1>' ); 168 endif; 169 170 printf( '<span class="entry-date"><a href="%1$s" rel="bookmark"><time class="entry-date" datetime="%2$s">%3$s</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="%4$s" rel="author">%5$s</a></span></span>', 171 esc_url( get_permalink() ), 172 esc_attr( get_the_date( 'c' ) ), 173 esc_html( get_the_date() ), 174 esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), 175 get_the_author() 176 ); 177 178 if ( ! post_password_required() && ( comments_open() || get_comments_number() ) ) : 179 ?> 180 <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyfourteen' ), __( '1 Comment', 'twentyfourteen' ), __( '% Comments', 'twentyfourteen' ) ); ?></span> 181 <?php endif; ?> 182 </div><!-- .entry-meta --> 183 </header><!-- .entry-header --> 184 </article><!-- #post-## --> 185 </li> 186 <?php endwhile; ?> 187 188 </ol> 189 <a class="post-format-archive-link" href="<?php echo esc_url( get_post_format_link( $format ) ); ?>"><?php printf( __( 'More %s <span class="meta-nav">→</span>', 'twentyfourteen' ), $this->format_strings[ $format ] ); ?></a> 190 <?php 191 192 echo $args['after_widget']; 193 194 // Reset the post globals as this query will have stomped on it. 195 wp_reset_postdata(); 196 197 $GLOBALS['content_width'] = $tmp_content_width; 198 199 endif; // End check for ephemeral posts. 200 } 201 202 /** 203 * Deal with the settings when they are saved by the admin. 204 * 205 * Here is where any validation should happen. 206 * 207 * @since Twenty Fourteen 1.0 208 * 209 * @param array $new_instance New widget instance. 210 * @param array $instance Original widget instance. 211 * @return array Updated widget instance. 212 */ 213 function update( $new_instance, $instance ) { 214 $instance['title'] = strip_tags( $new_instance['title'] ); 215 $instance['number'] = empty( $new_instance['number'] ) ? 2 : absint( $new_instance['number'] ); 216 if ( in_array( $new_instance['format'], $this->formats ) ) { 217 $instance['format'] = $new_instance['format']; 218 } 219 220 return $instance; 221 } 222 223 /** 224 * Display the form for this widget on the Widgets page of the Admin area. 225 * 226 * @since Twenty Fourteen 1.0 227 * 228 * @param array $instance 229 * @return void 230 */ 231 function form( $instance ) { 232 $title = empty( $instance['title'] ) ? '' : esc_attr( $instance['title'] ); 233 $number = empty( $instance['number'] ) ? 2 : absint( $instance['number'] ); 234 $format = isset( $instance['format'] ) && in_array( $instance['format'], $this->formats ) ? $instance['format'] : 'aside'; 235 ?> 236 <p><label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php _e( 'Title:', 'twentyfourteen' ); ?></label> 237 <input id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>"></p> 238 239 <p><label for="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>"><?php _e( 'Number of posts to show:', 'twentyfourteen' ); ?></label> 240 <input id="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'number' ) ); ?>" type="text" value="<?php echo esc_attr( $number ); ?>" size="3"></p> 241 242 <p><label for="<?php echo esc_attr( $this->get_field_id( 'format' ) ); ?>"><?php _e( 'Post format to show:', 'twentyfourteen' ); ?></label> 243 <select id="<?php echo esc_attr( $this->get_field_id( 'format' ) ); ?>" class="widefat" name="<?php echo esc_attr( $this->get_field_name( 'format' ) ); ?>"> 244 <?php foreach ( $this->formats as $slug ) : ?> 245 <option value="<?php echo esc_attr( $slug ); ?>"<?php selected( $format, $slug ); ?>><?php echo get_post_format_string( $slug ); ?></option> 246 <?php endforeach; ?> 247 </select> 248 <?php 249 } 250 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 25 01:41:18 2014 | WordPress honlapkészítés: online1.hu |