CMB2元数据条件逻辑

时间:2015-09-22 作者:Rasel Ahmed

我正在使用CMB2 用于自定义帖子上的metabox。我正在使用下面的代码添加metabox:

$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\\u this\\u field\\u if\\u true将是一个返回true或false的函数。但是,我想用另一个字段作为条件。此字段将显示其他字段的值是否为真。

下面是一个示例,如果不是首页模板,则不显示此字段

function show_this_field_if_true( $cmb ) {
    if ( $cmb->object_id !== get_option( \'page_on_front\' ) ) {
        return false;
    }
    return true;
}
如何使用字段设置此条件?

2 个回复
最合适的回答,由SO网友:Adil Elsaeed 整理而成

做到这一点的最佳方法是使用JavaScript,有几个CMB2插件可以让您轻松做到这一点:

  1. CMB2 Conditional
  2. CMB2 Conditional Logic

SO网友:Justin Sternberg

您需要更换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 值并保存页面。

相关推荐

仅为主页显示Metabox

我将尝试使用设置字段将metabox添加到主页,但出现问题,请帮助我。删除时,metabox不会显示在页面编辑器中if statement 它显示在所有页面上。add_action(\'add_meta_boxes\', \'metabox_homepage_videos\'); function metabox_homepage_videos($post) { if (is_front_page()): add_meta_box(\'metabox