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');
}