Поддержка → Проблемы и решения → Создание связей (многие ко многим) через meta box между новыми типами записей
Создание связей (многие ко многим) через meta box между новыми типами записей
-
Уважаемые программисты помогите решить задачку.
Необходимо создать:
1) новый тип записи: 1 шт., древовидный (сделал, наименование ugrozy_po_bdu, код прилагаю ниже)
2) новый тип записи: 1 шт., не древовидный (сделал, наименование mery_ib_gis_ispdn, код прилагаю ниже)
3) связи: многие ко многим для всех 2-ух новых типов записей (сделал частично, код прилагаю ниже)По п.3 у меня возникали вопросы, и я не могу сделать связи.
Связи я решил делать через meta_boxes. meta_boxes созданы для обоих новых типов записей.
В boxes_ugrozy_po_bdu для типа записи mery_ib_gis_ispdn необходимо выводить в checkbox все записи из ugrozy_po_bdu.
В boxes_mery_ib_gis_ispdn для типа записи ugrozy_po_bdu необходимо выводить в checkbox все записи из mery_ib_gis_ispdn.Соответственно связи многие ко многим для 2-ух новых типов записей должны создаваться через checkbox. Как раз это у меня не получается.
Помогите решить эту задачу. Спасибо!
add_action('add_meta_boxes', function () { add_meta_box( 'boxes_ugrozy_po_bdu', 'Меры ИБ, 'fun_ugrozy_po_bdu', 'ugrozy_po_bdu', 'side', 'low' ); }, 1); function fun_ugrozy_po_bdu( $post ){ $items = get_posts(array( 'post_type' => 'mery_ib_gis_ispdn', 'posts_per_page' => -1, 'orderby' => 'post_title', 'order' => 'ASC', )); if( $items ){ echo '<div style="max-height:600px; overflow-y:auto;"><ul>'; foreach((array) $items as $item ){ [необходимо выводить checkbox] } echo '</ul></div>'; } } add_action('add_meta_boxes', function(){ add_meta_box( 'boxes_mery_ib_gis_ispdn', 'Угрозы по БДУ', 'fun_mery_ib_gis_ispdn', 'mery_ib_gis_ispdn', 'side', 'low' ); }, 1); function fun_mery_ib_gis_ispdn( $post ){ $items = get_posts(array( 'post_type' => 'ugrozy_po_bdu', 'post_parent' => $post -> ID, 'posts_per_page' => -1, 'orderby' => 'post_title', 'order' => 'ASC', )); if( $items ){ foreach((array) $items as $item ){ [необходимо выводить checkbox] } } } add_action('init', 'my_custom_init'); function my_custom_init(){ register_post_type('ugrozy_po_bdu', array( 'labels' => array( 'name' => 'Угрозы по БДУ', 'singular_name' => 'Угроза', 'add_new' => 'Добавить новую', 'add_new_item' => 'Добавить новую угрозу', 'edit_item' => 'Редактировать угрозу', 'new_item' => 'Новая угроза', 'view_item' => 'Посмотреть угрозу', 'search_items' => 'Найти угрозу', 'not_found' => 'Угроз не найдено', 'not_found_in_trash' => 'В корзине угроз не найдено', 'parent_item_colon' => '', 'menu_name' => 'Угрозы по БДУ', ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, )); register_post_type('mery_ib_gis_ispdn', array( 'labels' => array( 'name' => 'Меры', 'singular_name' => 'Мера', 'add_new' => 'Добавить новую', 'add_new_item' => 'Добавить новую меру', 'edit_item' => 'Редактировать меру', 'new_item' => 'Новая мера', 'view_item' => 'Посмотреть меру', 'search_items' => 'Найти меру', 'not_found' => 'Мер не найдено', 'not_found_in_trash' => 'В корзине мер не найдено', 'parent_item_colon' => '', 'menu_name' => 'Меры', ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'hierarchical' => true, )); }
-
Метабоксы состоят из двух частей:
1. функция вывода на хуке ‘add_meta_boxes’ или параметром register_meta_box_cb у register_post_type()
2. функция обработки и сохранения введенных данных на хуке ‘save_post’.Второй части я в Вашем коде не вижу.
2-ая часть кода:
add_action('save_post', 'fun_save_post'); function fun_save_post($post_id){ update_post_meta( $post_id, 'ttt_cb', $_POST['ttt_cb']); }
Этот код должен сохранять значение checked (true или false) принятого от checkbox.
Так вот у меня не получается правильно добавить checkbox в meta_boxes.Как добавить checkbox в meta_boxes?
- Тема «Создание связей (многие ко многим) через meta box между новыми типами записей» закрыта для новых ответов.