MetaBox画像出力について

2025-8-27 / last up date:2025-9-3 Meta Box wordpress

Meta Box の single_image を clone した時の返り値と安全な出力方法

<?php
// 画像ID配列に正規化
$vals = (array) rwmb_get_value('slideimage');
$ids  = [];

foreach ( $vals as $v ) {
    if ( is_array($v) ) {
        if ( isset($v['ID']) && $v['ID'] ) {
            $ids[] = (int) $v['ID'];
        }
    } else {
        if ( ! empty($v) ) {
            $ids[] = (int) $v;
        }
    }
}

if ( ! empty($ids) ) : ?>
  <ul class="slide-thumbs">
    <?php foreach ( $ids as $id ) : ?>
      <li>
        <?php
        // altはメディアのタイトルをフォールバックに
        $alt = get_post_meta($id, '_wp_attachment_image_alt', true);
        if ( empty($alt) ) {
            $media_post = get_post($id);
            if ( $media_post ) {
                $alt = $media_post->post_title;
            } else {
                $alt = '';
            }
        }
        echo wp_get_attachment_image($id, 'thumbnail', false, ['alt' => esc_attr($alt)]);
        ?>
      </li>
    <?php endforeach; ?>
  </ul>
<?php endif; ?>


掲載しているコードや設定例は動作を保証するものではありません。
利用は自己責任で行い、必ずテスト環境での確認を行ってください。