サポート » 使い方全般 » 画像がJPGかどうかを判断して、classを付与したいです

  • kekejiji

    (@kekejiji)


    初心者です。宜しくお願い致します。

    カテゴリーページにサムネイル画像が並んでいます。

    今まではPNG画像だけだったので、

         <?php while (have_posts()) : the_post(); ?>
     <li><a href="<?php the_permalink(); ?>"><?php
    $post_title= get_the_title()."のプリント";
    the_post_thumbnail(array( 80,80 ),
    array( 'alt' =>$post_title,)); 
    ?></a></li>
      <?php endwhile; ?>

    と記載していましたが、

    JPG画像を増やすことになり、

    条件分岐で画像がJPGかどうか判断して、JPG画像だった場合に出力されたhtmlのimgにclass=jpgimageと追加したいのです。

    自分なりに調べて

    <?php
    $img_url = get_the_post_thumbnail_url(get_the_ID(),'full')
    ?>
    <?php
    if(exif_imagetype($img_url) == IMAGETYPE_JPEG): ?>
     <li><a href="<?php the_permalink(); ?>"><?php
    $post_title= get_the_title()."のプリント";
    the_post_thumbnail(array( 80,80 ),
    array( 'alt' =>$post_title,), array('class' => 'jpgimage')); 
    ?></a></li>
    <?php else: ?>
     <li><a href="<?php the_permalink(); ?>"><?php
    $post_title= get_the_title()."のプリント";
    the_post_thumbnail(array( 80,80 ),
    array( 'alt' =>$post_title,)); 
    ?></a></li>
    <?php endif; ?>

    などとやってみましたが、上手くいきませんでした。

    どうかご教授宜しくお願い致します。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • manbo

    (@manbo)

    マルチポストはマナー的によろしくありません。
    https://teratail.com/questions/rbonb6wnrgetgp

    トピック投稿者 kekejiji

    (@kekejiji)

    manboさん

    マナー違反だと知らず、申し訳ございませんでした。

    manbo

    (@manbo)

    以下のコード例はURLに.jpgが含まれていればclassを付与、それ以外は無しという内容でこのような感じの方が簡潔かと思います。
    exif_imagetypeはファイルに対して実行可能な関数なのでURLの文字列には無意味です。

    <?php
    $img_url = get_the_post_thumbnail_url( get_the_ID(), 'full' );
    $post_title= get_the_title()."のプリント";
    if( strpos( $img_url, '.jpg' ) !== false ){
    	$array = [
    		'class' => 'jpgimage',
    		'alt'   => $post_title,
    	];
    } else {
    	$array = [
    		'alt'   => $post_title,
    	];
    }
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( array( 80, 80 ), $array ); ?></a></li>

    以後、マルチポストはお気をつけください。

    こんにちは

    これではどうでしょうか。

    <?php
    $img_url = get_the_post_thumbnail_url( get_the_ID(), 'full' );
    $post_title = get_the_title() . 'のプリント';
    
    $path = parse_url( $img_url, PHP_URL_PATH );
    $filename = basename( $path );
    $extension = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
    
    $attr['alt'] = $post_title;
    if( 'jpeg' === $extension || 'jpg' === $extension ) {
        $attr['class'] = 'jpgimage';
    }
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( [80,80], $attr ) ?></a></li>

    こんにちは。

    JPG 画像だった場合にクラスを付与するそもそもの目的は何でしょうか。

    もし「img 要素の src 属性で、.jpg 拡張子が指定されている場合のみ特定のスタイルを適用したい」という事が実現したいことであれば、CSS の後方一致セレクタだけで対応出来ると思います。

    img[src$=".jpg"] {
    
      // ここにスタイルを記述
    }
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「画像がJPGかどうかを判断して、classを付与したいです」には新たに返信することはできません。