サポート » プラグイン » Advanced Custom Field Repeater Field の画像表示のコードの書き方

  • 解決済 kotetutomunyu

    (@kotetutomunyu)


    いろいろ調べたのですが初心者で結局どうしてもちゃんとわからないため
    質問しました。(;;)よろしくお願いします。

    プラグインの Advanced Custom Field「Repeater Field」を利用して

    フィールド名   : higawari
    フィールドタイプ : repeater

    そのRepeater Fields の中に
    テキスト    : bento_text
    チェックボックス: bento_yousiki
    画像      : bento_img (画像 の返り値は 画像URLです。)

    と作りました。

    コードは下記のように書けばテキスト・セレクトボックス・画像もちゃんと表示されるのですが…

    <?php if( have_rows('higawari') ): ?>
    <?php while(the_repeater_field('higawari')): ?>
    
    <?php the_sub_field('bento_text'); ?>
    <?php the_sub_field('bento_yousiki'); ?>
    <br />
    <img src="<?php the_sub_field('bento_img'); ?>" width="130" height="130" alt="bentou">
    <br />
    
    <?php endwhile; ?>
    <?php endif; ?>

    テキスト入力がない場合でも、改行は存在してしまって間が開いてしまったり、
    画像は投稿しない場合でも、画像のリンク切れなどとしてブラウザに表示されてしまいます。

    どのように書いたら投稿時のみ表示させれるかどなたか教えてください
    よろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • モデレーター gatespace

    (@gatespace)

    http://www.advancedcustomfields.com/resources/get_sub_field/

    if( get_sub_field('カスタムフィールド名') )
    使って条件分岐すればいいのでは?

    トピック投稿者 kotetutomunyu

    (@kotetutomunyu)

    ありがとうございます@
    とりあえずあずやってみます。できたらまた報告します。

    トピック投稿者 kotetutomunyu

    (@kotetutomunyu)

    教えていただいた

    if( get_sub_field(‘カスタムフィールド名’) ) を参考に

    if( have_rows(‘higawari’) ):  の部分を
    sub_field サブなので、 bento_text 、 bento_img などにするのかなとも思って
    あれこれいれてみたり

    <?php the_sub_field(‘bento_text’); ?> を
    <?php get_sub_field(‘bento_text’); ?> に変えてみたり 
    でも if がないので関係ないですよね。。

    参考サイトもみて ほかにもいろいろ当てはめたりしたのですが
    そんな状態でちゃんと表示されなくてどこをどう利用すれば 正しい記述になるのか
    まだできていません

    こんにちわ、kotetutomunyuさん。

    たぶん、こんな感じで大丈夫だと思います。

    <?php if( have_rows('higawari') ): ?>
    <?php while(the_repeater_field('higawari')): ?>
    
    <?php
    if ( get_sub_field('bento_text') ) {
        the_sub_field('bento_text');
    }
    if ( get_sub_field('bento_yousiki') ) {
        the_sub_field('bento_yousiki');
    }
    ?>
    <br />
    <img src="<?php the_sub_field('bento_img'); ?>" width="130" height="130" alt="bentou">
    <br />
    
    <?php endwhile; ?>
    <?php endif; ?>

    if ( get_sub_field('bento_text') )if ( get_sub_field('bento_yousiki') ) の部分は入ってるデータが決まっているのであれば、もう少し厳密にした方がいいとは思います。が、僕の方からはとりあえず、上記の感じで。
    あと、エスケープ処理はしっかりした方がよいと思います。

    トピック投稿者 kotetutomunyu

    (@kotetutomunyu)

    ありがとうございます。助言いただいた もう少し厳密に、という意味も
    なににたいしてかもよくわからないくらいのレベルなので。。。

    if ( get_sub_field('bento_yousiki') ) {
        the_sub_field('bento_yousiki');
    }

    というのは もし bento_yousikiがあれば bento_yousikiを表示ということだと思うのですが

    画像も(改行も)投稿されたときだけ、

    <br />
    <img src="<?php the_sub_field('bento_img'); ?>" width="130" height="130" alt="bentou">
    <br />

    を表示としたいのですが 画像投稿がないときも リンク切れ画像と改行がでてしまします。

    それも if{} に入れてみたのですが 

    <?php if( have_rows('higawari') ): ?>
    <?php while(the_repeater_field('higawari')): ?>
    
    <?php
    if ( get_sub_field('bento_text') ) {
        the_sub_field('bento_text');
    }
    if ( get_sub_field('bento_yousiki') ) {
        the_sub_field('bento_yousiki');
    }
    if ( get_sub_field('bento_img') ) {
    
    echo '<br />';
    echo '<img src="<?php the_sub_field('bento_img'); ?>" width="130" height="130" alt="bentou">';
    echo '<br />';
    
    }
    ?>
    <?php endwhile; ?>
    <?php endif; ?>

    記述が変なのだと思うのですがエラーになってしまいます。

    PHP タグの中に更に PHP タグが入っているのでエラーになっています。

    <?php if( have_rows('higawari') ): ?>
    <?php while(the_repeater_field('higawari')): ?>
    
    <?php
    if ( get_sub_field('bento_text') ) {
        the_sub_field('bento_text');
    }
    if ( get_sub_field('bento_yousiki') ) {
        the_sub_field('bento_yousiki');
    }
    if ( get_sub_field('bento_img') ) {
        echo '<br />';
        echo '<img src="' . esc_url( get_sub_field('bento_img') ) . '" width="130" height="130" alt="bentou">';
        echo '<br />';
    }
    ?>
    <?php endwhile; ?>
    <?php endif; ?>
    トピック投稿者 kotetutomunyu

    (@kotetutomunyu)

    上の記述できちんと表示できました。
    投稿がない場合はちゃんと なにも表示されなくなりました。(;;)

    PHP タグの中に更に PHP タグが入っているのは駄目なのですね。
    置き換えてある . esc_url( get_sub_field(‘bento_img’) ) .  
    などあるのですがそうゆう置き換え?がぜんぜんわかっていないので本当に助かりました。
    画像のリンクもつけたいのですが教えてもらったコードを元にがんばってみます。

    わかりやすく回答いただいて、本当にありがとうございました。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「Advanced Custom Field Repeater Field の画像表示のコードの書き方」には新たに返信することはできません。