[ XREF Home ] [ Index ]

PHP Cross Reference of WordPress Trunk

Provided by Yoast

title

Body

[close]

/wp-includes/ -> post-thumbnail-template.php (source)

   1  <?php
   2  /**
   3   * WordPress Post Thumbnail Template Functions.
   4   *
   5   * Support for post thumbnails
   6   * Themes function.php must call add_theme_support( 'post-thumbnails' ) to use these.
   7   *
   8   * @package WordPress
   9   * @subpackage Template
  10   */
  11  
  12  /**
  13   * Check if post has an image attached.
  14   *
  15   * @since 2.9.0
  16   *
  17   * @param int $post_id Optional. Post ID.
  18   * @return bool Whether post has an image attached.
  19   */
  20  function has_post_thumbnail( $post_id = null ) {
  21      $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
  22      return (bool) get_post_thumbnail_id( $post_id );
  23  }
  24  
  25  /**
  26   * Retrieve Post Thumbnail ID.
  27   *
  28   * @since 2.9.0
  29   *
  30   * @param int $post_id Optional. Post ID.
  31   * @return int
  32   */
  33  function get_post_thumbnail_id( $post_id = null ) {
  34      $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
  35      return get_post_meta( $post_id, '_thumbnail_id', true );
  36  }
  37  
  38  /**
  39   * Display Post Thumbnail.
  40   *
  41   * @since 2.9.0
  42   *
  43   * @param int $size Optional. Image size.  Defaults to 'post-thumbnail', which theme sets using set_post_thumbnail_size( $width, $height, $crop_flag );.
  44   * @param string|array $attr Optional. Query string or array of attributes.
  45   */
  46  function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
  47      echo get_the_post_thumbnail( null, $size, $attr );
  48  }
  49  
  50  /**
  51   * Update cache for thumbnails in the current loop
  52   *
  53   * @sicne 3.2
  54   */
  55  function update_post_thumbnail_cache() {
  56      global $wp_query;
  57  
  58      if ( $wp_query->thumbnails_cached )
  59          return;
  60  
  61      $thumb_ids = array();
  62      foreach ( $wp_query->posts as $post ) {
  63          if ( $id = get_post_thumbnail_id( $post->ID ) )
  64              $thumb_ids[] = $id;
  65      }
  66  
  67      if ( ! empty ( $thumb_ids ) ) {
  68          get_posts( array(
  69                  'update_post_term_cache' => false,
  70                  'include' => $thumb_ids,
  71                  'post_type' => 'attachment',
  72                  'post_status' => 'inherit',
  73                  'nopaging' => true
  74          ) );
  75      }
  76  
  77      $wp_query->thumbnails_cached = true;
  78  }
  79  
  80  /**
  81   * Retrieve Post Thumbnail.
  82   *
  83   * @since 2.9.0
  84   *
  85   * @param int $post_id Optional. Post ID.
  86   * @param string $size Optional. Image size.  Defaults to 'thumbnail'.
  87   * @param string|array $attr Optional. Query string or array of attributes.
  88   */
  89  function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $attr = '' ) {
  90      $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
  91      $post_thumbnail_id = get_post_thumbnail_id( $post_id );
  92      $size = apply_filters( 'post_thumbnail_size', $size );
  93      if ( $post_thumbnail_id ) {
  94          do_action( 'begin_fetch_post_thumbnail_html', $post_id, $post_thumbnail_id, $size ); // for "Just In Time" filtering of all of wp_get_attachment_image()'s filters
  95          if ( in_the_loop() )
  96              update_post_thumbnail_cache();
  97          $html = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
  98          do_action( 'end_fetch_post_thumbnail_html', $post_id, $post_thumbnail_id, $size );
  99      } else {
 100          $html = '';
 101      }
 102      return apply_filters( 'post_thumbnail_html', $html, $post_id, $post_thumbnail_id, $size, $attr );
 103  }
 104  
 105  ?>


Generated: Wed Jun 1 08:30:02 2011 Cross-referenced by PHPXref 0.7
Provided by Yoast and awesome WordPress Hosting