Intereting Posts
WordPress – как заменить <! – больше -> на строку на the_content () в single.php Неточная информация по теме Как изменить отображаемый контент на другой тег в WordPress Двадцать четырнадцать? Создание первой публикации более широкой, чем другие сообщения на домашней странице (по умолчанию) Где найти код, который перенаправляет запросы на статический URL страницы на домашнюю страницу Сессия постоянно сбрасывает переменную Получение пустых миниатюр в медиа-библиотеке? Admin blank, но меню администратора, показывающее Хранение данных в многомерном массиве из динамически созданного цикла foreach Есть что-то вроде admin_notices для переднего конца? Как отобразить ошибку на конкретном шаблоне? Каков наилучший способ редактирования файлов WordPress? Как поддерживать пользовательские шаблоны в настраиваемом типе сообщений? Отладка вызовов db: $ wpdb-> вставка работает на тестовом сайте, а не на идентичном производственном сайте Изображение в WordPress не отображается на главной странице

Мой собственный флажок флажка checkbox сохраняет последнее значение, которое я проверил

Я создаю свой метабокс с флажками. Я хочу сохранить значения флажков, отмеченных как категории (ID).

Я создал массив, чтобы добавить значения флажков, но он сохраняет только последний флажок, который я проверил.

Я пытаюсь сохранить значения, используя следующие функции.

wp_set_post_categories (); wp_set_object_terms ();

Кроме того, когда я нажимаю кнопку отправки для создания / редактирования сообщения, независимо от используемой функции, она всегда сохраняет последнее значение флажка.

Вот мой код:

add_action( 'admin_menu', 'my_enhanced_categories_remove_meta_box'); function my_enhanced_categories_remove_meta_box(){ remove_meta_box('categorydiv', 'post', 'normal'); } //Add new taxonomy meta box add_action( 'add_meta_boxes', 'my_enhanced_categories_add_meta_box'); function my_enhanced_categories_add_meta_box() { add_meta_box( 'category-all', 'Custom Portfolio Categories','my_enhanced_categories_category_metabox','post' ,'side','high'); } $postterms = get_the_terms( $post->ID,$taxonomy ); function my_enhanced_categories_category_metabox( $post ) { //Set up the taxonomy object and get terms $taxonomy = 'category'; $tax = get_taxonomy($taxonomy);//This is the taxonomy object //The name of the form $name = 'tax_input[' . $taxonomy . ']'; //Get all the terms for this taxonomy $terms = get_terms($taxonomy,array('hide_empty' => 0)); echo '<div id="' . $taxonomy . '-all" class="tabs-panel">'; echo '<ul id="' . $taxonomy . '-checklist" class="list-' . $taxonomy . 'categorychecklist form-no-clear">'; $categories = array(); foreach($terms as $term){ $id = $taxonomy.'-'.$term->term_id; echo "<li id='$id'><label>"; echo "<input type='checkbox' id='in-$id' name='{$name}-$term->term_id' value='$term->term_id' />$term->name<br />"; echo "</label></li>"; $key_tax = ($_POST['tax_input']); if (!empty($key_tax)) { array_push($categories, array_values($key_tax)); /*wp_set_post_categories( $_POST['post_ID'], array_values($key_tax)[0]); */ } }?> </ul> </div> <?php } // var_dump($categories); // wp_set_post_terms( $_POST['post_ID'], $categories, 'category' ); wp_set_object_terms( $_POST['post_ID'], $categories, 'category'); var_dump($categories); 

Solutions Collecting From Web of "Мой собственный флажок флажка checkbox сохраняет последнее значение, которое я проверил"

Это довольно просто достичь, сначала переименуйте атрибут name в my_categories[] который затем передается как массив.

Затем вам нужно будет установить values каждого флажка как category id . Таким образом, вы можете my_categories[] цикл через массив my_categories[] а затем установить категории, присутствующие в этом массиве.

Вот упрощенный пример:

 // In your callback function for metabox, // This should be inside a loop. <input type="checkbox" name="my_categories[]" value="$term->term_id"> <?php // This should be hooked to the save_post action of appropriate post type. if(!empty($_POST['my_categories'])) { foreach($_POST['my_categories'] as $cat) { echo $cat; //echoes the value set in the HTML form for each checked checkbox. //In your case the ids of selected checkboxes, now all you need to do is set those categories. } } ?> 

Теперь у вас есть все идентификаторы выбранных категорий в массиве, которые легче обрабатывать. Используйте логику для установки категорий.