サポート » 使い方全般 » 記事に画像投稿がない場合の代替画像表示

  • 解決済 digitalix

    (@digitalix)


    いつも参考にさせてもらってます。
    いろいろと模索し試しているのですが、なかなか先に進みません。
    ひきつづき探ってはみますが、皆さんのアドバイスを頂けたら幸いです。

    <?php query_posts('cat=1&showposts=10'); ?>
    <ul>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php
    $files = get_children("post_parent=$id&post_type=attachment&post_mime_type=image");
    if($files){
            $keys = array_keys($files);
            $num=$keys[0];
            $thumb=wp_get_attachment_thumb_url($num);
            print "<li><a href='".get_permalink()."' title=\"$post->post_title\"><img src='$thumb' class='thumbnail' width='80' height='80' alt='' /></a></li>";
    }
    ?>
    <?php endwhile;else: ?>
    <?php endif; ?>
    </ul>

    じつはトップページに、カテゴリに属した記事内の画像(サムネイル)を並べるように考えてます。
    いろいろと調べ、上のようにテンプレートに書き、トップページに並べてみました。
    これでサムネイルは表示されたのですが、画像投稿のない記事は表示されません。

    やりたいことは…

    • 記事に画像がある場合はそのサムネイルを表示
    • 画像がない場合は、固有の画像を表示

    です。
    これは条件分岐とかでできるのでしょうか?どうぞよろしくお願いします。

    ちなみに、プラグイン(Post Thumbs)を使えば簡単にできますが、画質が良くないのと、サムネイルのサイズが固定されてしまうのが回避したい原因です。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • if (empty($files)){
    //画像がない場合の処理
    }else{
    //画像がある場合の処理
    }
    ?>

    これでできないでしょうか?

    誤解なされるといけないので頭を付けておきます。
    もちろんループなどは省略しています。

    <?php
    $files = hoge;
    if (empty($files)){
    //画像がない場合の処理
    }else{
    //画像がある場合の処理
    }
    ?>

    akihiroさん

    返事が遅くなってしまいましたが、アドバイスありがとうございました。
    さっそく試してみました。

    <ul>
    <?php query_posts('cat=1&showposts=10'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php
    $files = get_children("post_parent=$id&post_type=attachment&post_mime_type=image");
    if (empty($files)){
    	print "<li><a href=\"".get_permalink()."\" title=\"$post->post_title\"><img src=\"http://example.com/~/noimage.png\" alt=\"代替\" width=\"80\" height=\"80\" /></a></li>\n";
    }else{
    	$keys = array_keys($files);
    	$num=$keys[0];
    	$thumb=wp_get_attachment_thumb_url($num);
    	print "<li><a href=\"".get_permalink()."\" title=\"$post->post_title\"><img src=\"$thumb\" width=\"80\" height=\"80\" alt=\"画像\" /></a></li>\n";
    }
    ?>
    <?php endwhile;else: ?>
    <?php endif; ?>
    </ul>

    akihiroさんのアドバイスをもとに、上のように記述を修正してみました。

    【結果】
    考えていた通りの動作をさせることができました。
    本当に助かりました。akihiroさんありがとうございました。

    わかっていることですが、テンプレートタグだけではなく、PHPをもっと理解できれば、Wordpressはどんどん楽しくなりますね。

    ※今回使用したWordpressのバージョンは2.7です。

    上記に記載したコードに問題がありました。
    HTMLエスケープしてません。

    こちらでもご指摘を受けていますが、同等の内容でしたので、かなり経過していましたが修正させていただきます。

    <ul>
    <?php
    query_posts('cat=1&amp;showposts=10');
    if ( have_posts() ) : while ( have_posts() ) : the_post();
    $files = get_children("post_parent=$id&amp;post_type=attachment&amp;post_mime_type=image");
    if (empty($files)){
    	print '<li><a href="' . clean_url(get_permalink()) . '" title="' .the_title_attribute('echo=0') . '"><img src="http://example.com/~/noimage.png" width="80" height="80" alt="代替" /></a></li>'. "\n";
    }else{
    	$keys = array_keys($files);
    	$num=$keys[0];
    	$thumb=wp_get_attachment_thumb_url($num);
    	print "<li><a href="' . clean_url(get_permalink()) . '" title="' .the_title_attribute('echo=0') . '"><img src="' . clean_url($thumb) .'" width="80" height="80" alt="' . the_title_attribute('echo=0') . '" /></a></li>'. "\n";
    }
    endwhile;else:
    endif;
    ?>
    </ul>

    参照された方には大変失礼いたしました。ごめんなさい。
    自分の未熟さを実感しました。もっと基礎の知識を深めないといけませんね。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事に画像投稿がない場合の代替画像表示」には新たに返信することはできません。