使用CMB2显示嵌入在可重复元对象中的内容

时间:2015-07-01 作者:Nsokyi

我正在使用CMB2 设置元框的重复字段,但我找不到任何关于如何在前端显示重复oEmbed字段的文档。使用下面的代码,我让metabox在后端工作:

      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 个回复
SO网友:Nsokyi

所以,来回答我自己的问题。

在函数/后端代码中,我在这一行中犯了一个错误:

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

在repeater字段中,它不需要前缀,正如父字段中定义的那样,它应该是:

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

这就成功了!

结束

相关推荐

让作者通过按下按钮向Metabox添加字段

我为作者添加了一个自定义元数据库,他们可以在其中填写指向源的url,然后我可以在模板中使用该url。在我的functions.php<?php /* Add metaboxes (see below) */ function add_custom_metaboxes(){ add_meta_box(\'source_post_metabox\', \'Link to bron (optional)\', \'output_source_metabox\', \'pos