CMB2 metabox logică condițională

22 sept. 2015, 06:03:40
Vizualizări: 2.7K
Voturi: 4

Folosesc CMB2 pentru metabox-uri pe postări personalizate. Adaug un metabox folosind codul de mai jos:

$cmb_demo->add_field( array(
    'name'       => __( 'Text Test', 'cmb2' ),
    'desc'       => __( 'descriere câmp (opțional)', 'cmb2' ),
    'id'         => $prefix . 'text',
    'type'       => 'text',
    'show_on_cb' => 'show_this_field_if_true', 
) );

Înțeleg că show_this_field_if_true va fi o funcție care va returna true sau false. Dar vreau să fac asta condițional cu un alt câmp. Acest câmp să apară doar dacă valoarea altui câmp este true.

Aici este un exemplu care Nu afișează acest câmp dacă nu este șablonul paginii principale

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

Cum pot face această condiție cu un câmp?

0
Toate răspunsurile la întrebare 2
2

Trebuie să înlocuiți apelul get_option cu un apel la get_post_meta:

function show_this_field_if_true( $cmb ) {
    // Verifică dacă există altă valoare meta
    if ( ! get_post_meta( $cmb->object_id, 'other_meta_key_to_check', 1 ) ) {
        return false;
    }
    return true;
}

Rețineți, acest lucru va funcționa doar pentru încărcarea inițială a paginii și nu va afișa câmpul până când nu actualizați valoarea other_meta_key_to_check și salvați pagina.

15 mar. 2016 02:48:53
Comentarii

Ar trebui să fie posibil să folosești ajax pentru a salva câmpurile care ar trebui să declanșeze afișarea sau ascunderea unui câmp, și să reîncarci valorile meta, nu-i așa?

gloria gloria
1 feb. 2017 18:58:14

Da, cu siguranță este posibil, dar deoarece există atât de multe tipuri diferite de câmpuri, procesul nu este simplu de documentat.

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

Cea mai bună metodă de a face acest lucru este prin utilizarea JavaScript și există câteva plugin-uri CMB2 care vă permit să faceți acest lucru cu ușurință:

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