サポート » 使い方全般 » 取得画像サイズの条件分岐がしたいです

  • 解決済 AkitoiRo

    (@dona0513)


    現在は投稿記事の1枚目の画像を取得して一覧に表示しているのですが、
    そちらを下記サイズ条件で表示させる方法があれば
    教えていただけたら幸いです。
    functions.phpに
    1000*800 hoge
    800*600 hoge2
    500*300 hoge3
    とサムネイルを作成しました。

    これらの画像を、hogeサイズの画像があればhogeをなければhoge2を、なければhoge3のサイズを表示したいです。

    条件分岐の書き方を教えていただけませんでしょうか?

    宜しくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • Tsuyoshi.

    (@andante0727)

    こちらの関数で取得できるのではないかと思います。

    dona0513さん

    こんな感じでしょうか。

    考え方的には、まず、アップしたオリジナル画像の幅を取得します。
    オリジナル画像の幅を基準に条件分岐を行い、画像出力するといった関数です。

    
    <?php
    
    $attachment_id = '';//reset
    $attachment_id = get_post_thumbnail_id();//サムネイルID取得
    
    if($attachment_id)://アイキャッチ画像があれば
     
    //reset
    $image_size = '';
    $thumbnail_src = array();
    $thumbnail_org_width = '';
    $thumbnail_src_org = array();
    $thumbnail_url = '';
    $thumbnail_width = '';
    $thumbnail_height = '';
    
     
    //画像取得
    $image__size_org = 'full';//とりあえず最大サイズを取得
    $thumbnail_src_org = wp_get_attachment_image_src( $attachment_id,$image_size_org );
    ///$thumbnail_url = esc_url($thumbnail_src[0],$protocols);
    $thumbnail_org_width = intval($thumbnail_src_org[1]);
    //$thumbnail_height = intval($thumbnail_src[2]);
    
      if($thumbnail_org_width > 999) ://幅が1000px以上の時
    
        $image_size = 'hoge';//とりあえず最大サイズを取得
        $thumbnail_src = wp_get_attachment_image_src( $attachment_id,$image_size );
    
      elseif($thumbnail_org_width > 799)://幅が800px以上の時
    
        $image_size = 'hoge1';//とりあえず最大サイズを取得
        $thumbnail_src = wp_get_attachment_image_src( $attachment_id,$image_size );
    
      else://幅が800px以下の時
    
        $image_size = 'hoge2';//とりあえず最大サイズを取得
        $thumbnail_src = wp_get_attachment_image_src( $attachment_id,$image_size );
    
      endif;
    
      if($thumbnail_src):
        $thumbnail_url = esc_url($thumbnail_src[0],$protocols);
        $thumbnail_width = intval($thumbnail_src[1]);
        $thumbnail_height = intval($thumbnail_src[2]);
    
       echo '<img class="" src="'.$thumbnail_url.'" width="'.$thumbnail_width.'" height="'.$thumbnail_height.'" />'.PHP_EOL;//画像を表示
    
      endif;
    
     
    endif;//ENDアイキャッチ画像があれば
    
    ?>
    
    
    • この返信は6年、 9ヶ月前にphotographer hiro.が編集しました。理由: コード修正
    • この返信は6年、 9ヶ月前にphotographer hiro.が編集しました。理由: 説明追加
    トピック投稿者 AkitoiRo

    (@dona0513)

    ご返答ありがとうございます。

    わざわざコードまで大変ありがとうございます。

    適応してみました所、幅が1000px以上の時はうまく表示されるのですが

    1000px以上ならhoge>原寸サイズ

    の2つしか表示されません。
    原寸サイズは表示させたくないのですが、何か方法はありますでしょうか?

    dona0513さん

    これでどうでしょう?

    
    <?php
    
    $attachment_id = '';//reset
    $attachment_id = get_post_thumbnail_id();//サムネイルID取得
    
    if($attachment_id)://アイキャッチ画像があれば
     
    //reset
    $image_size = '';
    $thumbnail_src = array();
    $thumbnail_org_width = '';
    $thumbnail_src_org = array();
    $thumbnail_url = '';
    $thumbnail_width = '';
    $thumbnail_height = '';
    
     
    //画像取得
    $image__size_org = 'full';//とりあえず最大サイズを取得
    $thumbnail_src_org = wp_get_attachment_image_src( $attachment_id,$image_size_org );
    ///$thumbnail_url = esc_url($thumbnail_src[0],$protocols);
    $thumbnail_org_width = intval($thumbnail_src_org[1]);
    //$thumbnail_height = intval($thumbnail_src[2]);
    
      if($thumbnail_org_width > 999) ://幅が1000px以上の時
    
        $image_size = 'hoge';//とりあえず最大サイズを取得
        $thumbnail_src = wp_get_attachment_image_src( $attachment_id,$image_size );
    
      elseif( ($thumbnail_org_width < 1000) && ($thumbnail_org_width > 799)   )://999~800の時
    
        $image_size = 'hoge1';//とりあえず最大サイズを取得
        $thumbnail_src = wp_get_attachment_image_src( $attachment_id,$image_size );
    
      elseif( $thumbnail_org_width < 800 )://幅が800px未満の時
    
        $image_size = 'hoge2';//とりあえず最大サイズを取得
        $thumbnail_src = wp_get_attachment_image_src( $attachment_id,$image_size );
    
      endif;
    
      if($thumbnail_src):
        $thumbnail_url = esc_url($thumbnail_src[0],$protocols);
        $thumbnail_width = intval($thumbnail_src[1]);
        $thumbnail_height = intval($thumbnail_src[2]);
    
       echo '<img class="" src="'.$thumbnail_url.'" width="'.$thumbnail_width.'" height="'.$thumbnail_height.'" />'.PHP_EOL;//画像を表示
    
      endif;
    
     
    endif;//ENDアイキャッチ画像があれば
    
    ?>
    
    

    もしかしたら、switch case関数の方がいいかもです。
    http://php.net/manual/ja/control-structures.switch.php

    トピック投稿者 AkitoiRo

    (@dona0513)

    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「取得画像サイズの条件分岐がしたいです」には新たに返信することはできません。