valor de eco del tipo de campo 'seleccionar' en la plantilla de página usando cmb2?

4

Estoy usando el complemento CMB2 para agregar metaboxes en un tipo de publicación personalizada. Estoy agregando metaboxes adicionales a través de functions.php en el tema de niños. Vale la pena mencionar que el tema principal / publicación personalizada ya tiene algunos metaboxes definidos, solo estoy complementando ...

Ya he creado metaboxes exitosamente con el tipo de campo = Texto y valores de eco en la página de destino, sin embargo, cuando se escribe tipo = Seleccionar Puedo crear el campo de meta pero no puedo hacer eco de la opción seleccionada en la página de destino.

¿Podrías ayudarme, por favor? Lo aprecio.

Functions.php (creando los metaboxes)

add_action( 'cmb2_meta_boxes', 'custom_metabox' );

function custom_metabox( array $metaboxes ) {
    $metaboxes[REALIA_PROPERTY_PREFIX . 'ficha_tecnica'] = array(
        'id'                        => REALIA_PROPERTY_PREFIX . 'ficha',
        'title'                     => 'Ficha Técnica',
        'object_types'              => array( 'property' ),
        'context'                   => 'normal',
        'priority'                  => 'high',
        'show_names'                => true,
        'fields'                    => array(

            array(
                'id'    => REALIA_PROPERTY_PREFIX . 'area_terreno',
                'name'  => 'Área do Terreno',
                'type'  => 'text'
            ),

            array(
                'id'               => 'wiki_test_select',
                'name'             => 'Test select inline',
                'type'             => 'select',
                'show_option_none' => true,
                'default'          => 'custom',
                'options'          => array(
                    'standard' => __( 'test123', 'ficha' ),
                    'custom'   => __( 'test1234', 'ficha' ),
                     'none'     => __( 'test12345', 'ficha' ),
            ),
        ),
    ),
);

return $metaboxes;

}

Y luego imprimo en el área de contenido de la página

    <div class="col-sm-12 <?php if ( ! empty( $images ) ) : ?>col-md-5<?php else : ?>col-md-12<?php endif; ?>">
    <div class="property-list">
        <h2><?php echo __( 'Property overview', 'realia' ); ?></h2>

        <dl>
            <?php $price = Realia_Price::get_property_price(); ?>
            <?php if ( ! empty( $price ) ) : ?>
                <dt><?php echo __( 'Price', 'realia' )?></dt><dd><?php echo wp_kses( $price, wp_kses_allowed_html( 'post' ) ); ?></dd>
            <?php endif; ?>

            <?php $area = get_post_meta( get_the_ID(), REALIA_PROPERTY_PREFIX . 'attributes_area', true ); ?>
            <?php if ( ! empty( $area ) ) : ?>
                <dt><?php echo __( 'Área do Terreno', 'realia' ); ?></dt><dd><?php echo esc_attr( $area ); ?> <?php echo get_theme_mod( 'realia_measurement_area_unit', 'sqft' ); ?></dd>
            <?php endif; ?>

            <?php $metafield_id = get_the_ID(); ?>
            <?php $test = get_post_meta( $metafield_id, REALIA_PROPERTY_PREFIX . 'options', true ); ?>
            <?php if ( ! empty( $test ) ) : ?>
                <dt><?php echo __( 'test123', 'realia' ); ?></dt><dd><?php echo $test; ?></dd>
            <?php endif; ?>

        </dl>
    </div><!-- /.property-list -->
</div>

                            
pregunta VA-YVR 08.07.2015 - 22:10

1 respuesta

4

Para empezar, te recomiendo que uses la API para registrar metaboxes y campos que se pueden ver aquí: enlace . Para repetir la etiqueta de la opción seleccionada, harías algo como esto:

add_action( 'cmb2_admin_init', 'custom_metabox' );

function custom_metabox() {
    $cmb = new_cmb2_box( array(
        'id'           => REALIA_PROPERTY_PREFIX . 'ficha_tecnica',
        'title'        => 'Ficha Técnica',
        'object_types' => array( 'property' ),
    ) );

    $cmb->add_field( array(
        'id'   => REALIA_PROPERTY_PREFIX . 'area_terreno',
        'name' => 'Área do Terreno',
        'type' => 'text'
    ) );

    $cmb->add_field( array(
        'id'               => 'wiki_test_select',
        'name'             => 'Test select inline',
        'type'             => 'select',
        'show_option_none' => true,
        'default'          => 'custom',
        // Use an options callback
        'options_cb'       => 'wiki_test_select_options',
    ) );

}

function wiki_test_select_options() {
    // return a standard options array
    return array(
         'standard' => __( 'test123', 'ficha' ),
         'custom'   => __( 'test1234', 'ficha' ),
         'none'     => __( 'test12345', 'ficha' ),
    );
}

Y luego en el tema:

<?php
$metafield_id = get_the_ID();
$options = wiki_test_select_options();
$key = get_post_meta( $metafield_id, 'wiki_test_select', true );
$option_name = isset( $options[ $key ] ) ? $options[ $key ] : $options['custom'];
?>
<dt><?php echo $option_name; ?></dt><dd><?php echo $key; ?></dd>
    
respondido por el Justin Sternberg 15.03.2016 - 02:08

Lea otras preguntas en las etiquetas