サポート » 使い方全般 » 条件分岐で画像の名前から表示する画像を振り分けたい

  • 解決済 katakuri

    (@katakuri)


    ■ローカルサーバーでテスト中です。(XAMPP=PHP 8.2.0、 WordPress=ver 6.2)
    ■テーマ=自作

    全カテゴリー一覧リスト(front-page.php)から →  カテゴリー毎の投稿記事一覧ページ(category.php)に飛ばした時に
    category.php内に、ヘッダー画像として、カテゴリー毎に違う画像を表示しようとしています。

    前提として、テーマのimagesフォルダ内には、それぞれのカテゴリー用の画像と、No-Image の画像をあらかじめ用意しておきます。
    ●カテゴリー用の画像ファイル名=category-{カテゴリーのスラッグ}-300×169.jpg
    (例)category-book-300×169.jpg、 category-illust-300×169.jpg、 など

    ■問題は、投稿者が新しくカテゴリーを追加した際に、それ用の画像をまだ用意していなかったら、No-Imageの画像が出るようにしたいのですが
     「現在のカテゴリーページと一致するカテゴリーのスラッグ名のついた画像ファイルがない場合」という条件分岐はどう書いたらよいのか
     で悩んでいます。
     そもそもそんな条件分岐はムリなのでしょうか?
     お忙しい中恐縮ですが、ご教示いただければ幸いです。

    <?php $cats = get_the_category(); ?><!-- カテゴリーの情報を取得 -->
    
    <!-- 現在のカテゴリーのスラッグと一致するスラッグ名のついたカテゴリー用画像がimagesフォルダ内にあったら -->
    <?php if( is_category( $cat->slug == ????? )): ?>
    <div class=""><img src="<?php echo get_template_directory_uri(); ?>/images/category-<?php echo $cat->slug; ?>-300x169.jpg" alt="<?php echo $cat->cat_name; ?>" /></div>
    
    <!-- 画像がなかったら「No Image画像」を表示 -->
    <?php else: ?>
    <div class=""><img src="<?php echo get_template_directory_uri(); ?>/images/no-image300x169.png" alt="<?php echo $cat->cat_name; ?>" /></div>
    
    <?php endif; ?>
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    is_filefile_exists 関数などでファイルの存在をチェックできます。

    例)

    if ( file_exists( get_stylesheet_directory() . "/images/category-{$cat->slug}-300x169.jpg" ) ) {
    トピック投稿者 katakuri

    (@katakuri)

    ありがとうございます!

    修正してみます。

    トピック投稿者 katakuri

    (@katakuri)

    最初に自分が書いた
    <?php $cats = get_the_category(); ?><!– カテゴリーの情報を取得 –>
    の部分がダメだったようで、エラーがでまくってました・・・(滝汗)

    <!-- カテゴリーの情報を取得 -->
    <?php
    	 $cat = get_queried_object();
    	 $cat_name = $cat -> name;
    	 $cat_slug = $cat -> slug;
    	 $cat_description = $cat -> description;
     ?>
    <!-- 現在のカテゴリーのスラッグと一致するスラッグ名のついたカテゴリー用画像が、親テーマのimagesフォルダ内にあったら -->
    <?php if ( file_exists( get_template_directory() . "/images/category-img-{$cat->slug}-640x360.jpg" ) ) : ?>
    <div class="cate_itemright"><img src="<?php echo get_template_directory_uri(); ?>/images/category-img-<?php echo $cat_slug; ?>-640x360.jpg" alt="<?php echo $cat_name; ?>" /></div>
    
    <!-- 条件2 子テーマのimagesフォルダ内にあったら -->
    <?php elseif( file_exists( get_stylesheet_directory() . "/images/category-img-{$cat->slug}-640x360.jpg" ) ) : ?>
    <div class="cate_itemright"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/category-img-<?php echo $cat_slug; ?>-640x360.jpg" alt="<?php echo $cat_name; ?>" /></div>
    
    <!-- それ以外「No Image画像」を表示 -->
    <?php else: ?>
    <div class="cate_itemright"><img src="<?php echo get_template_directory_uri(); ?>/images/no-image640x360.png" alt="<?php echo $cat_name; ?>" /></div>
    <?php endif; ?>

       ↑
    これでうまくいきました!!(画像ファイル名もちょっと変更)

    「親テーマ」と「子テーマ」では参照するURLが違うのですね。
    get_stylesheet_directory() と書いてくださったおかげで、「子テーマ」の対応も追加する事ができました。
    気づかせてくださってありがとうございます。

    知らなかったことばかりで、とても勉強になります!
    本当にありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「条件分岐で画像の名前から表示する画像を振り分けたい」には新たに返信することはできません。