Intereting Posts

CMB2 условная логика обмена

Я использую CMB2 для метаболизма на пользовательских сообщениях. Я добавляю метабокс, используя следующий код:

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

Я понимаю, что show_this_field_if_true будет функцией, которая вернет true или false. Но я хочу сделать это условным с другим полем. Это поле покажет, истинно ли другое значение поля.

Вот пример, который не отображает это поле, если это не шаблон главной страницы

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

Как я могу сделать это условным с полем?

Solutions Collecting From Web of "CMB2 условная логика обмена"

Вам нужно заменить вызов get_option вызовом 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 и не сохраните страницу.