• 解決済 h3236_kusumi

    (@h3236_kusumi)


    Advanced Custom Fieldsを使ってチェックボックスのオンオフで、表示する画像を変えようと思っています。
    チェックボックスはリンゴ、バナナ、オレンジの3つがあり、どのチェックボックスにもチェックが入っていないと
    Warning: in_array() [function.in-array]: Wrong datatype for second argument in
    というエラーが出てしまいます。
    どれかひとつでもチェックされていれば問題ありません。
    コードは以下のように書いています。

    • <?php if (in_array(‘リンゴ’, get_field(‘fruits’,$post->ID))) : ?>
      <img src=”images/ringo_on.gif”>
      <?php else: ?>
      <img src=”images/ringo_off.gif”>
      <?php endif; ?>
    • <?php if (in_array(‘バナナ’, get_field(‘fruits’,$post->ID))) : ?>
      <img src=”images/banana_on.gif”>
      <?php else: ?>
      <img src=”images/banana_off.gif”>
      <?php endif; ?>
    • <?php if (in_array(‘オレンジ’, get_field(‘fruits’,$post->ID))) : ?>
      <img src=”images/orange_on.gif”>
      <?php else: ?>
      <img src=”images/orange_off.gif”>
      <?php endif; ?>

    WordPressのバージョンは3.5.1、Advanced Custom Fieldsのバージョンは4.0.3です。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • チェックボックスでなにもチェック入っていないと、その配列そのもの(この場合fruits)が存在しないことになり、if文で聞いたときにエラーになります。

    なので、上記のコードの前にisset関数で確認して、あったら上記のif文を実行
    なかったらそのまま処理を終わる・・・にするとエラーが出なくなると思いますよ。

    トピック投稿者 h3236_kusumi

    (@h3236_kusumi)

    別口で聞いていたところ下記のようにすることで解決できました!

    <?php $fruits = get_field(‘fruits’,$post->ID); ?>
    <?php if ( is_array( $fruits ) && in_array(‘リンゴ’, $fruits ) ) : ?>
    <img src=”images/ringo_on.gif”>
    <?php else: ?>
    <img src=”images/ringo_off.gif”>
    <?php endif; ?>
    <?php if ( is_array( $fruits ) && in_array(‘バナナ’, $fruits ) ) : ?>
    <img src=”images/banana_on.gif”>
    <?php else: ?>
    <img src=”images/banana_off.gif”>
    <?php endif; ?>
    <?php if ( is_array( $fruits ) && in_array(‘オレンジ’, $fruits ) ) : ?>
    <img src=”images/orange_on.gif”>
    <?php else: ?>
    <img src=”images/orange_off.gif”>
    <?php endif; ?>

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Advanced Custom Fieldsのチェックボックスについて」には新たに返信することはできません。