web-dev-qa-db-ja.com

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を返す関数になることを理解しています。しかし、私はこれを別の分野で条件付きにしたいのです。このフィールドは他のフィールドの値がtrueかどうかを示します。

これがフロントページのテンプレートでない場合、このフィールドを表示しない例です。

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

これをフィールドでどのように条件付きにすることができますか?

3
Rasel Ahmed

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値を更新しそしてページを保存するまでフィールドを表示しないでしょう。

2