[ Index ]

WordPress Cross Reference

title

Body

[close]

/wp-content/themes/twentyfourteen/inc/ -> widgets.php (source)

   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">&rarr;</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">&rarr;</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">&rarr;</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  }


Generated: Tue Mar 25 01:41:18 2014 WordPress honlapkészítés: online1.hu