Lógica condicional para metaboxes en CMB2

22 sept 2015, 06:03:40
Vistas: 2.7K
Votos: 4

Estoy utilizando CMB2 para metaboxes en posts personalizados. Estoy añadiendo un metabox usando el siguiente código:

$cmb_demo->add_field( array(
    'name'       => __( 'Texto de prueba', 'cmb2' ),
    'desc'       => __( 'descripción del campo (opcional)', 'cmb2' ),
    'id'         => $prefix . 'text',
    'type'       => 'text',
    'show_on_cb' => 'mostrar_este_campo_si_verdadero', 
) );

Entiendo que mostrar_este_campo_si_verdadero será una función que devolverá verdadero o falso. Pero, quiero hacer esto condicional con otro campo. Este campo debería mostrarse solo si el valor de otro campo es verdadero.

Aquí hay un ejemplo que no muestra este campo si no es la plantilla de página frontal:

function mostrar_este_campo_si_verdadero( $cmb ) {
    if ( $cmb->object_id !== get_option( 'page_on_front' ) ) {
        return false;
    }
    return true;
}

¿Cómo puedo hacer esto condicional con un campo?

0
Todas las respuestas a la pregunta 2
2

Necesitas reemplazar la llamada get_option con una llamada a get_post_meta:

function show_this_field_if_true( $cmb ) {
    // Verificar si existe otro valor meta
    if ( ! get_post_meta( $cmb->object_id, 'other_meta_key_to_check', 1 ) ) {
        return false;
    }
    return true;
}

Ten en cuenta que esto solo funcionará para la carga inicial de la página y no mostrará el campo hasta que actualices el valor de other_meta_key_to_check y guardes la página.

15 mar 2016 02:48:53
Comentarios

¿No debería ser posible usar ajax para guardar los campos que se supone que activan la visualización u ocultación de un cuadro de campo, y recargar los valores meta?

gloria gloria
1 feb 2017 18:58:14

Sí, ciertamente es posible, pero dado que hay tantos tipos de campos diferentes, no es sencillo documentar el proceso.

Justin Sternberg Justin Sternberg
17 sept 2019 06:03:49
0

La mejor manera de hacer esto es usando JavaScript y hay un par de plugins de CMB2 que te permiten hacerlo fácilmente:

  1. CMB2 Condicional
  2. CMB2 Lógica Condicional
27 nov 2019 08:52:56