WordPress 可用的缩略图函数

记录一个 WordPress 获取文章中的图片作为缩略图,并缓存的函数,方便以后应用。

  1. <?php
  2. if( !defined( 'THEME_THUMBNAIL_PATH' ) ) define( 'THEME_THUMBNAIL_PATH', '/cache/theme-thumbnail' ); //存储目录
  3. function biji_build_empty_index( $path ){ //生成空白首页
  4.  $index = $path . '/index.php';
  5.  if( is_file( $index ) ) return;
  6.     wp_mkdir_p( $path );
  7.  file_put_contents( $index, "<?phpn// Silence is golden.n" );
  8. }
  9. function biji_crop_thumbnail( $url, $width, $height = null ){ //裁剪图片
  10.  $width = (int) $width;
  11.  $height = empty( $height ) ? $width : (int) $height;
  12.  $hash = md5( $url );
  13.  $file_path = constant( 'WP_CONTENT_DIR' ) . constant( 'THEME_THUMBNAIL_PATH' ) . "/$hash-$width-$height.jpg";
  14.  $file_url = content_url( constant( 'THEME_THUMBNAIL_PATH' ) . "/$hash-$width-$height.jpg" );
  15.  if( is_file( $file_path ) ) return $file_url;
  16.  $editor = wp_get_image_editor( $url );
  17.  if( is_wp_error( $editor ) ) return $url;
  18.  $size = $editor->get_size();
  19.  $dims = image_resize_dimensions( $size['width'], $size['height'], $width, $height, true );
  20.  //if( !$dims ) return $url;
  21.  $cmp = min( $size['width'] / $width, $size['height'] / $height );
  22.  if( is_wp_error( $editor->crop( $dims[2], $dims[3], $width * $cmp, $height * $cmp, $width, $height ) ) ) return $url;
  23.     biji_build_empty_index( constant( 'WP_CONTENT_DIR' ) . constant( 'THEME_THUMBNAIL_PATH' ) );
  24.  return is_wp_error( $editor->save( $file_path, 'image/jpg' ) ) ? $url : $file_url;
  25. }
  26. //缩略图获取post_thumbnail
  27. function post_thumbnail($width = 275,$height = 170 )
  28. {
  29.  global $post;
  30.  //如果有特色图片则取特色图片
  31.  if( has_post_thumbnail( $post->ID ) ){
  32.  $thumbnail_ID = get_post_thumbnail_id( $post->ID );
  33.  $thumbnailsrc = wp_get_attachment_image_src( $thumbnail_ID, 'full' );
  34.  return biji_crop_thumbnail($thumbnailsrc[0],$width,$height);
  35.  } else {
  36.  $content = $post->post_content;
  37.  preg_match_all('/<img.*?(?: |\t|\r|\n)?src=['"]?(.+?)['"]?(?:(?: |\t|\r|\n)+.*?)? >/sim', $content, $strResult, PREG_PATTERN_ORDER);
  38.  if(count($strResult[1]) > 0) return biji_crop_thumbnail($strResult[1][0],$width,$height);
  39.  else{
  40.  return false;
  41.  }
  42.  }
  43. }
  44. ?>

    在调用时,可以这样调用:

    1. <?php if (post_thumbnail(110, 110)){ ?>
    2.   <img src="<?php echo post_thumbnail(110, 110); ?>" srcset="<?php echo post_thumbnail(220, 220); ?> 2x"/>
    3. <?php }else{
    4.  echo '<i class="icon-file-text2"></i>';
    5.  }?>

    
    

WEEX交易所已上线平台币 WEEX Token (WXT)。WXT 作为 WEEX 交易所生态系统的基石,主要用于激励 WEEX 交易平台社区的合作伙伴、贡献者、先驱和活跃成员。

新用户注册 WEEX 账户、参与交易挖矿及平台其他活动,均可免费获得 WXT 空投奖励。

点此注册 WEEX 账户,即刻领取 1,600 WXT 新用户专属空投

本站资源均来源于网络或网友投稿,部分资源未经测试,难免存在BUG,所有资源只限于学习研究,不得商用。如使用本站下载的资源造成任何损失或发生侵权行为,均与本站无关。如不接受本声明请勿下载!本站资源如有侵权,请联系QQ:497149677核实后立即删除!
最客资源网 » WordPress 可用的缩略图函数