WebのMemo|WordPress・Meta Box・HTML/CSS・Javascript・JQueryの制作Tips集MetaBox画像出力について

date posted:2025-8-27 / last up date:2026-1-19 Meta Box wordpress
Meta imageout

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; ?>


フィールドSingle Imageで、clone無しの場合

配列のURLで出す(一番シンプル)

<?php
$page_id = (int) get_queried_object_id();
$image   = rwmb_meta('sampleimg', ['size' => 'full'], $page_id);

if ( ! empty($image) && is_array($image) && ! empty($image['url']) ) : ?>
  <img src="<?php echo esc_url($image['url']); ?>" alt="">
<?php endif; ?>

「wp_get_attachment_image() で出したい」場合(IDを取り出す)

<?php
$page_id = (int) get_queried_object_id();
$image   = rwmb_meta('sampleimg', ['size' => 'full'], $page_id);

$image_id = 0;

if ( is_array($image) ) {
    if ( isset($image['ID']) && $image['ID'] ) {
        $image_id = (int) $image['ID'];
    }
}

if ( $image_id ) {
    echo wp_get_attachment_image($image_id, 'full');
}

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