メタボックスの繰り返しフィールドを設定するのに CMB2 を使用していますが、表示する繰り返しoEmbedフィールドを取得する方法に関するドキュメントが見つかりません。フロントエンド以下のコードで、バックエンドでメタボックスが動作しています。
add_action( 'cmb2_init', 'cmb2_register_repeatable_media_resources_metabox' );
function cmb2_register_repeatable_media_resources_metabox() {
$prefix = '_cmb_r_';
$cmb_group = new_cmb2_box( array(
'id' => $prefix . 'resources_media_metabox',
'title' => __( 'Media Resources', 'cmb2' ),
'object_types' => array( 'resources', ),
) );
// Parent
$group_field_id = $cmb_group->add_field( array(
'id' => $prefix . 'resources_media_group',
'type' => 'group',
'options' => array(
'group_title' => __( 'Entry {#}', 'cmb2' ),
'add_button' => __( 'Add Another Entry', 'cmb2' ),
'remove_button' => __( 'Remove Entry', 'cmb2' ),
'sortable' => true, // beta
),
) );
// Media Resource Title
$cmb_group->add_group_field( $group_field_id, array(
'name' => __( 'Media Resource Title', 'cmb2' ),
'id' => 'media_resource_title',
'type' => 'text',
) );
// Media Resource
$cmb_group->add_group_field( $group_field_id, array(
'name' => __( 'oEmbed', 'cmb2' ),
'id' => $prefix . 'media_embed',
'type' => 'oembed',
) );
}
フロントエンドにタイトルを表示できますが、埋め込みURLは表示できませんか。
<?php $resources_media_group = get_post_meta( get_the_ID(), '_cmb_r_resources_media_group', true ); ?>
<div>
<ul>
<?php foreach ( $resources_media_group as $value ) { ?>
<li>
<h3><?php echo $value['media_resource_title'] ?></h3>
<?php echo $value['media_embed'] ?>
</li>
<?php } ?>
</ul>
</div>
だから、私自身の質問に答えるために。
関数/バックエンドのコードで、私はこの行を間違えました:
'id' => $prefix . 'media_embed',
リピーターフィールドでは、プレフィックスは不要で、親で定義されているので、次のようになります。
'id' => 'media_embed',
そしてフロントエンドのためにこの行:
<?php $value = get_post_meta( get_the_ID(), 'media_embed', true ); echo wp_oembed_get( $value ); ?>
に変更されました:
<?php echo wp_oembed_get ($value['media_embed']); ?>
そしてそれがトリックでした!