CMB2 metabox conditional logic

22 set 2015, 06:03:40
Visualizzazioni: 2.7K
Voti: 4

Sto utilizzando CMB2 per i metabox nei post personalizzati. Aggiungo un metabox usando il codice seguente:

$cmb_demo->add_field( array(
    'name'       => __( 'Test Text', 'cmb2' ),
    'desc'       => __( 'field description (optional)', 'cmb2' ),
    'id'         => $prefix . 'text',
    'type'       => 'text',
    'show_on_cb' => 'show_this_field_if_true', 
) );

Capisco che show_this_field_if_true sarà una funzione che restituirà vero o falso. Ma voglio renderlo condizionale rispetto a un altro campo. Questo campo deve mostrarsi solo se il valore di un altro campo è vero.

Ecco un esempio che non mostra questo campo se non è il template della pagina frontale

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

Come posso rendere questo condizionale rispetto a un campo?

0
Tutte le risposte alla domanda 2
2

Devi sostituire la chiamata get_option con una chiamata a get_post_meta:

function show_this_field_if_true( $cmb ) {
    // Controlla se esiste l'altro valore meta
    if ( ! get_post_meta( $cmb->object_id, 'other_meta_key_to_check', 1 ) ) {
        return false;
    }
    return true;
}

Tieni presente che questo funzionerà solo per il caricamento iniziale della pagina e non mostrerà il campo finché non aggiorni il valore di other_meta_key_to_check e salvi la pagina.

15 mar 2016 02:48:53
Commenti

Dovrebbe essere possibile utilizzare ajax per salvare i campi che dovrebbero attivare la visualizzazione o la nascita di un box di campo e ricaricare i valori meta, vero?

gloria gloria
1 feb 2017 18:58:14

Sì, è certamente possibile, ma poiché ci sono così tanti tipi di campi diversi, non è semplice documentare il processo.

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

Il modo migliore per farlo è utilizzare JavaScript e ci sono un paio di plugin CMB2 che ti permettono di farlo facilmente:

  1. CMB2 Conditional
  2. CMB2 Conditional Logic
27 nov 2019 08:52:56