CMB2如何在模板中显示自定义字段


<table class="lg-directory-table">
<?php foreach( $grouped_results as $key => $grouped_result ): ?>

<?php if( !empty( $group_posts ) ): ?>
<tr>
<th colspan="<?php echo count( $args['fields'] ); ?>" scope="rowgroup">
<?php $term = get_term($key, LG_PREFIX . 'directory_group'); ?>
<?php echo $term->name; ?>
</th>
</tr>
<?php endif; ?>

<?php if( 
!isset( $args['template_options']['show_headers'] )
|| $args['template_options']['show_headers'] 
): ?>
<tr>
<?php foreach( $args['template_options']['fields'] as $field_name ): ?>
<th><small><?php echo apply_filters('lg_directory_member_field_header', $field_name ); ?></small></th>
<?php endforeach; ?>
</tr>
<?php endif; ?>

<?php global $post; ?>
<?php foreach( $grouped_result as $post ): setup_postdata($post); ?>

<?php

$member = array();
$member_metabox = cmb2_get_metabox( LG_PREFIX . 'directory_member' , LG_PREFIX . 'directory_member' );

foreach( $member_metabox->prop( 'fields' ) as $field_id => $field ) {

$field_value = get_post_meta( $post->ID, $field_id, true );

if( $field_value ) {
$array_field_id = str_replace( LG_PREFIX . 'directory_member_', '', $field_id );
$member[ $array_field_id ] = $field_value;
}
}

?>

<tr>
<?php foreach( $args['template_options']['fields'] as $field_name ): ?>

<td>
<span class="<?php echo 'lg-directory-' . $field_name; ?>">
<?php                           
$field_value = '';
if( isset( $member[$field_name] ) ) {
$field_value = $member[$field_name];
}
echo apply_filters('lg_directory_member_field_value', $field_value, $field_name, $member, $args );
?>
</span>
</td>

<?php endforeach; ?>    
</tr>

<?php endforeach; wp_reset_postdata(); ?>

<?php endforeach; ?>
</table>
<?php endif; ?>

我的字段在后台显示和保存数据,但在我的模板中,它们根本拒绝显示数据。有什么特别的方法我需要做吗?我想不通这件事。如果有人能为我指明正确的方向。(而不是CMB2 GitHub,没有人评论他们的代码,所以我不知道他们在做什么,去哪里!(

请帮忙!

我将用例子回答。

这是我的CMB2元盒后端部分:

/*  Tour Metabox  */
add_action( 'cmb2_admin_init', 'lmbox_register_tour_metabox' );
function lmbox_register_tour_metabox() {
$prefix = 'tour_';
//Itinerary Metabox
$lmd_metabox = new_cmb2_box( array(
'id'            => 'tour_metabox2',
'title'         => esc_html__( 'Tour Itinerary', 'lombokmedia' ),
'object_types'  => array( 'tour' ), // Post type
'context'    => 'normal',
'priority'   => 'high',
) );

$group_field_id = $lmd_metabox->add_field( array(
'id'          => $prefix . 'demo',
'type'        => 'group',
'description' => esc_html__( 'Rincian jadwal tour', 'cmb2' ),
'options'     => array(
'group_title'   => esc_html__( 'Hari {#}', 'cmb2' ),
'add_button'    => esc_html__( 'Tambah', 'cmb2' ),
'remove_button' => esc_html__( 'Hapus', 'cmb2' ),
'sortable'      => true,
// 'closed'     => true,
),
) );

$lmd_metabox->add_group_field( $group_field_id, array(
'name'       => esc_html__( 'Judul', 'cmb2' ),
'id'         => 'titlex1',
'type'       => 'text',
'default'   => 'Hari ',
) );
$lmd_metabox->add_group_field( $group_field_id, array(
'name'        => esc_html__( 'Rincian', 'cmb2' ),
'description' => esc_html__( 'Rincian itinerary hari itu', 'cmb2' ),
'id'          => 'itinerary_desc',
'type'        => 'wysiwyg',
'options' => array(
'wpautop' => true, // use wpautop?
'media_buttons' => false,
'textarea_rows' => get_option('default_post_edit_rows', 5),
),
) );
} //END

这就是我在singletour.php(只是行程部分(中显示它的方式

<h2 class="post-title"><?php _e('Jadwal Kegiatan', 'lombokmedia') ?> <a href="<?php the_permalink(); ?>" title="Continue reading <?php the_title(); ?>"><?php the_title(); ?></a>:</h2>
<?php
$entries = get_post_meta( get_the_ID(), 'tour_demo', true );
foreach ( (array) $entries as $key => $entry ) {
$title = $desc = '';
if ( isset( $entry['titlex1'] ) ) {
$title = esc_html( $entry['titlex1'] );
}
if ( isset( $entry['itinerary_desc'] ) ) {
$desc = wpautop( $entry['itinerary_desc'] );
}
echo '<div class="tour-item">';
echo '<h3>'.$title.'</h3>';
echo '<div>'.$desc.'</div>';
echo '</div>';
} 
?>

我希望这能帮助你理解和理解它。

最新更新