Как я могу вывести WPAlchemy, повторяя мета значения в моем шаблоне страницы?

У меня есть пользовательский тип сообщения, Загрузки, который содержит некоторые пользовательские обмены, включая повторяющееся поле. Я могу вывести значения для всех из них в свой шаблон страницы, но я не могу вывести значения повторяющихся полей в свой шаблон страницы.

В my downloads_meta.php у меня есть следующее:

<div class="my_meta_control"> <label>Includes:</label> <?php $metabox->the_field('cb_second_includes'); ?> <p><input type="checkbox" class="second-includes-check" name="<?php $metabox->the_name(); ?>" value="1"<?php $metabox->the_checkbox_state('1'); ?>/><span>Different bullet points for previous version?</span></p> <div class="clearfix"> <?php while($metabox->have_fields_and_multi('docs')): ?> <?php $metabox->the_group_open(); ?> <?php $metabox->the_field('li-text'); ?> <?php $wpalchemy_media_access->setGroupName('li-n'. $mb->get_the_index())->setInsertButtonLabel('Insert'); ?> <div class="col includes"> <?php echo $wpalchemy_media_access->getField(array('name' => $metabox->get_the_name(), 'value' => $metabox->get_the_value())); ?> <a href="#" class="dodelete button" style="float:right;">-</a> </div> <?php $metabox->the_group_close(); ?> <?php endwhile; ?> </div> <p style="margin-bottom:0; padding-top:0;"><a href="#" class="docopy-docs button">+</a></p> </div> 

И в моем шаблоне страницы у меня есть:

 <?php $args = array( // 'posts_per_page' => 4, 'post_type' => array('downloads'), 'post_status' => 'publish', 'orderby' => 'menu_order', 'order' => 'ASC' ); $temp = $wp_query; global $wp_query; global $post; $wp_query= null; $wp_query = new WP_Query($args); ?> <?php if($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php global $downloads_meta; ?> <ul> <?php while($downloads_meta->have_fields('docs')): ?> <li><?php echo $downloads_meta->get_the_value('li-text'); ?></li> <?php endwhile; ?> </ul> <?php endwhile; endif; ?> 

С приведенным выше кодом я могу выводить значения для моего первого настраиваемого типа сообщений, но во вторых двух ничего не выводит для повторяющихся полей. Я был бы признателен за любое понимание того, что я могу делать неправильно.

Solutions Collecting From Web of "Как я могу вывести WPAlchemy, повторяя мета значения в моем шаблоне страницы?"

По комментариям здесь (очень грубый) пример обращения к повторяющимся полям в интерфейсе. Обратите внимание, используя режим выделения WPAlchemy, который дает каждому поле свою собственную мета-запись и делает доступ к ним немного проще.

Также используя действия в «functions.php» для добавления метабокса и вывода содержимого для целей тестирования – очевидно, вы бы адаптировали код 'init' к своему настраиваемому типу сообщений и поместили код 'the_content' в свой шаблон страницы.

Например, в "functions.php":

 define( 'METABOX_ID', 'my_meta_' ); add_action( 'init', function () { if ( is_admin() ) { if ( ! class_exists( 'WPAlchemy_MetaBox' ) ) { require_once 'wpalchemy/MetaBox.php'; // Assuming subdirectory of current theme directory. require_once 'wpalchemy/MediaAccess.php'; // Assuming subdirectory of current theme directory. } global $wpalchemy_media_access; $wpalchemy_media_access = new WPAlchemy_MediaAccess(); $download_meta = new WPAlchemy_MetaBox( array( 'id' => METABOX_ID, 'types' => array( 'post' ), // array( 'downloads' ) 'template' => get_stylesheet_directory() . '/download_meta.php', 'priority' => 'default', 'mode' => WPALCHEMY_MODE_EXTRACT, 'prefix' => METABOX_ID, ) ); } } ); // Just for testing - should be in the custom post type template. add_action( 'the_content', function ( $content ) { if ( is_single() ) { $post_id = get_the_ID(); // Access single-valued (non-array) meta. $ul_class = 'docs'; if ( $cb_second_includes = get_post_meta( $post_id, METABOX_ID . 'cb_second_includes', true ) ) { $ul_class = 'docs_second_includes'; } // Access array-valued meta. if ( $docs = get_post_meta( $post_id, METABOX_ID . 'docs', true ) ) { ob_start(); ?> <ul class="<?php echo $ul_class; ?>"> <?php foreach ( $docs as $doc ) : ?> <li><?php echo $doc['li-text']; ?></li> <?php endforeach; ?> </ul> <?php $content = $content . ob_get_clean(); } } return $content; } ); 

Вот версия «download_meta.php», которую я использовал (обратите внимание, что метабокс адресуется через $mb ):

 <?php global $wpalchemy_media_access; ?> <div class="my_meta_control"> <label>Includes:</label> <?php $mb->the_field('cb_second_includes'); ?> <p><input type="checkbox" class="second-includes-check" name="<?php $mb->the_name(); ?>" value="1"<?php $mb->the_checkbox_state('1'); ?>/><span>Different bullet points for previous version?</span></p> <div class="clearfix"> <?php while($mb->have_fields_and_multi('docs')): ?> <?php $mb->the_group_open(); ?> <?php $mb->the_field('li-text'); ?> <?php $wpalchemy_media_access->setGroupName('li-n'. $mb->get_the_index())->setInsertButtonLabel('Insert'); ?> <div class="col includes"> <?php echo $wpalchemy_media_access->getField(array('name' => $mb->get_the_name(), 'value' => $mb->get_the_value())); ?> <a href="#" class="dodelete button" style="float:right;">-</a> </div> <?php $mb->the_group_close(); ?> <?php endwhile; ?> </div> <p style="margin-bottom:0; padding-top:0;"><a href="#" class="docopy-docs button">+</a></p> </div>