web-dev-qa-db-fra.com

Affichage incorporé dans des métaboxes répétables à l'aide de CMB2

J'utilise CMB2 pour configurer un champ répétitif de boîtes méta, mais je ne trouve aucune documentation sur la façon d'obtenir un champ répétitif oEmbed à afficher. sur le devant. Avec le code ci-dessous, j'ai la metabox qui travaille dans le backend:

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

      }

Je peux obtenir le titre à afficher sur le front-end mais pas l'URL incorporée?

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

Donc, pour répondre à ma propre question.

Dans le code fonctions/back-end, j'ai commis une erreur avec cette ligne:

'id' => $prefix . 'media_embed',

Dans un champ de répéteur, il n'a pas besoin du préfixe et comme cela est défini dans le parent, il devrait l'être:

'id' => 'media_embed',

Et pour le front-end cette ligne:

<?php $value = get_post_meta( get_the_ID(), 'media_embed', true ); echo wp_oembed_get( $value ); ?>

A été changé en:

<?php echo wp_oembed_get ($value['media_embed']); ?>

Et ça a fait l'affaire!

3
Nsokyi