Как показать условные настраиваемые поля с помощью плагина WordPress CMB2 при добавлении поста new

Я большой поклонник WordPress Плагин CMB2 при вызове пользовательских мета-блоков. Я узнал, что у него есть функциональность загрузить пользовательское поле, если условие соответствует, используя его show_on_cb параметр.

У меня есть сценарий:

Тип продукта: () A () B () C // переключатели
Поле для A: [] // текстовое поле
Поле для B: [] // текстовое поле
Поле для C: [] // текстовое поле

Процесс, который предлагает CMB, — это способ PHP, проверка состояния PHP, будь то любое текущее состояние (WordPress Cookie) или возврат db.

Поскольку мне нужно активировать их при выборе переключателя, таким образом я не могу этого достичь, потому что не могу передать какое-либо правило show_on_cb параметр, который может срабатывать при выборе переключателя, и если функция возвращает false, целый <div> даже не появился (поэтому я не могу передать jQuery для их запуска).

Как я могу решить это:

  1. Мне нужно показать соответствующие поля в соответствии с выбором переключателя.
  2. Мне нужно показать соответствующее поле, что БД возвращает, как выбранный.

Хотя я знаю, что могу достичь этого исключительно с помощью jQuery. Я могу принять любой способ, используя как PHP, так и JQuery.

0

Решение

Прежде всего, я сделал функцию, которая работает только на edit страница — это означает, что show_on_cb (значение: 'show_on_cb' => 'myproducts_product_typeA') будет работать, только если сообщение отредактировано, потому что я использовал get_current_screen() чтобы продиктовать это.

function myproducts_product_typeA( $field ) {
global $post;
$screen = get_current_screen();
if( $screen->action !== 'add' && $screen->post_type == 'my-products' ) {
$product_type = get_post_meta( $post->ID, 'mp_product_type', TRUE );
if( $product_type === 'A' ) return 1;
} else {
return 1; //to show on add-new page by default
}
}

Таким образом, вышеуказанная функция проверит БД и вернет true или же false согласно извлеченным данным из БД, но он вернет true только когда сообщение отредактировано. В новом посте он не проверяет базу данных, а просто возвращает true потому что я хочу, чтобы все поля были активными.

Затем я собираюсь использовать jQuery, чтобы показать / скрыть мои необходимые поля в соответствии с выбором переключателя.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]