web-dev-qa-db-ja.com

CMB2を使用して反復可能なメタボックスに埋め込まれたディスプレイ

メタボックスの繰り返しフィールドを設定するのに 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>
1
Nsokyi

だから、私自身の質問に答えるために。

関数/バックエンドのコードで、私はこの行を間違えました:

'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']); ?>

そしてそれがトリックでした!

3
Nsokyi