アトリエロワ

WordPressで記事の最初の画像を取得してサムネイルサイズで表示する

function.phpに追加

//画像サイズをセット
set_post_thumbnail_size( 150, 150, true );
 
//画像URLからIDを取得
function get_attachment_id_by_url( $url ) {
  global $wpdb;
  $sql = "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s";
  preg_match( '/([^\/]+?)(-e\d+)?(-\d+x\d+)?(\.\w+)?$/', $url, $matches );
  $post_name = $matches[1];
  return ( int )$wpdb->get_var( $wpdb->prepare( $sql, $post_name ) );
}
 
//画像をサムネイルで出力
function catch_that_image() {
  global $post;
  $first_img = '';
  $output = preg_match_all( '/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches );
  $first_img_src = $matches[1][0];
  $attachment_id = get_attachment_id_by_url( $first_img_src );
  $first_img = wp_get_attachment_image( $attachment_id, 'thumbnail', false, array( 'class' => 'archive-thumbnail' ) );
  if( empty( $first_img ) ){
    $first_img = '<img class="attachment_post_thumbnail" src="' . get_stylesheet_directory_uri() . '/images/no_image.png" alt="No image" />';
  }
  return $first_img;
}

表示させたいテンプレート(category.phpなど)に追加

<?php if( has_post_thumbnail() ): ?>
  <?php echo get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'class' => 'archive-thumbnail' ) ); ?> 
<?php else: ?>
  <?php echo catch_that_image(); ?>
<?php endif; ?>

HOME > wordpress設計術 > WordPressで記事の最初の画像を取得してサムネイルサイズで表示する

wordpress設計術

wordpress設計術