Mostrare oembed in metabox ripetibili usando CMB2

1 lug 2015, 19:37:56
Visualizzazioni: 1.42K
Voti: 1

Sto usando CMB2 per impostare un campo ripetibile di metabox ma non riesco a trovare documentazione su come mostrare un campo oEmbed ripetibile sul frontend. Con il codice qui sotto ho il metabox funzionante nel 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'         => __( 'Risorse Media', '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'   => __( 'Voce {#}', 'cmb2' ), 
        'add_button'    => __( 'Aggiungi Altra Voce', 'cmb2' ),
        'remove_button' => __( 'Rimuovi Voce', 'cmb2' ),
        'sortable'      => true, // beta
        ),
          ) );

        // Titolo Risorsa Media
        $cmb_group->add_group_field( $group_field_id, array(
          'name'        => __( 'Titolo Risorsa Media', 'cmb2' ),
          'id'          => 'media_resource_title',
          'type'        => 'text',
          ) );

        // Risorsa Media
        $cmb_group->add_group_field( $group_field_id, array(
          'name'  => __( 'oEmbed', 'cmb2' ),
          'id'    => $prefix . 'media_embed',
          'type'  => 'oembed',
          ) );

      }

Riesco a far vedere il titolo sul frontend ma non l'URL incorporato?

      <?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>
0
Tutte le risposte alla domanda 1
0

Quindi, per rispondere alla mia domanda.

Nel codice backend/funzioni ho fatto un errore con questa riga:

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

In un campo ripetitore non serve il prefisso poiché è definito nel genitore e quindi dovrebbe essere:

'id' => 'media_embed',

E per il frontend questa riga:

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

È stata cambiata in:

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

E questo ha funzionato!

3 lug 2015 14:35:40