Добавить пользовательский мета-бокс с пользовательской функцией обратного вызова, используя CMB2 в Wordpress?

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

Что я получаю от cmb, так это добавить метаполе с настраиваемым обратным вызовом, например

$cmb->add_field( array(
    'name'    => __( 'Test', 'cmb2' ),
    'id'      => $prefix . 'test',
    'type'    => 'text',
    'default' => 'prefix_set_test_default',
) );

Перезвоните:

function prefix_set_test_default( $field_args, $field ) {
    return my_custom_fields;

}

Что я могу сделать сейчас?

Заранее спасибо


person M. K Hossain    schedule 23.01.2017    source источник


Ответы (1)


Вы должны вернуть ассоциативный массив из вашей функции обратного вызова для CMB2, чтобы сгенерировать ваше пользовательское поле.

Вот пример того, как вернуть выпадающий список сообщений из пользовательского типа сообщений:

$cmb->add_field( [
   'name'             => __( 'Posts dropdown', 'cmb2' ),
   'id'               => $prefix . 'dropdown',
   'type'             => 'select',
   'show_option_none' => true,
   'options_cb'       => 'get_my_custom_posts',
] );

Функция обратного звонка

function get_my_custom_posts() {
   $posts = get_posts( [ 'post_type' => 'my_custom_post_type' ] );
   $options = [];

   foreach ( $posts as $post ) {
      $options[ $post->ID ] = $post->post_title;
   }

   return $options;
}
person Kris    schedule 23.01.2017