• pip777

    (@pip777)


    WordPressのメディアに投稿した画像でキャプションがついているものだけを6枚表示というのをやりたいのですが下記コードでうまくいかなくて困っています。

    この考え方がそもそも間違っているのでしょうか?
    よろしくお願いいたします

    
    <?php
    $myposts = get_posts('post_type=attachment&post_mime_type=image&posts_per_page=6&orderby=rand');
    if (have_posts()):
    foreach($myposts as $post) : ?>
    
    <div><img class="focusimg" src="<?php echo esc_url(get_template_directory_uri()); ?>/img/common/cover_frame.png">
    
    <?php if($post->post_excerpt;) : ?>
    
    <img src="<?php echo wp_get_attachment_url($post->ID); ?>">
    
    <?php endif; ?>
    
    </div>
    <?php endforeach; ?>
    <?php endif; ?>
    
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • gblsm

    (@gblsm)

    「うまくいかなくて」がどんな状況なのか不明なので、的外れなコメントかもしれませんが…

    コードを見ただけだと if の閉じ括弧の直前にセミコロンが余計な気がします。

    get_posts() で最大6件の画像を取得して、foreach ループ内の if でキャプションがない画像を読み飛ばすので、5件以下しか表示されない場合があります。それが問題なのでしたら、最初はもっと多くの画像を取得して、foreach ループ内で枚数が6枚を超えたらループを抜けるようなコードが良いと思います。

    gblsm

    (@gblsm)

    追記:
    if( have_posts() ) は不要ではないでしょうか。ペアになる endif も。
    それから $post という変数名は避けた方が良いと思います。

    • この返信は8年前にgblsmが編集しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「メディアからキャプションがついている画像のみ取得する方法」には新たに返信することはできません。