CMB2 Metabox bedingte Logik

Ich verwende CMB2 für Metabox für benutzerdefinierte Posts. Ich füge eine Metabox mit dem folgenden Code hinzu:

$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', ) ); 

Ich verstehe, dass show_this_field_if_true eine function ist, die wahr oder falsch zurückgibt. Aber ich möchte dies mit einem anderen Feld als Bedingung machen. Dieses Feld zeigt an, ob der Wert eines anderen Feldes wahr ist.

Hier ist ein Beispiel, das dieses Feld nicht anzeigt, wenn es nicht die Titelseitenvorlage ist

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

Wie kann ich das mit einem Feld konditionieren?

Solutions Collecting From Web of "CMB2 Metabox bedingte Logik"

Sie müssen den get_option Aufruf durch einen Aufruf von get_post_meta :

 function show_this_field_if_true( $cmb ) { // Check if other meta value exists if ( ! get_post_meta( $cmb->object_id, 'other_meta_key_to_check' 1 ) ) { return false; } return true; } 

other_meta_key_to_check Sie, dass dies nur für das erste Laden der Seite other_meta_key_to_check und das Feld erst other_meta_key_to_check wird, wenn Sie den Wert für other_meta_key_to_check aktualisieren und die Seite speichern.