Intereting Posts
Обработка электронной почты Woocommerce и завершена Возвращает количество элементов внутри каждого сообщения во всем цикле с неустановленным количеством элементов Нужна помощь в скрытии образа в сообщении в категории Как показать второе название страницы на странице Создайте иерархический список таксономии в WordPress Если пост имеет настраиваемое поле, тогда отобразите css-класс wordpress / woocommerce login url не перенаправляет правильно Веб-сайт Доступно только зарегистрированным пользователям WordPress 3.8 продолжает просить меня перейти на 3.8 Как изменить URL главного сайта на многоузловой установке (сети)? Добавить окно с изображением, кроме признака? Подключиться непосредственно к выполнению запроса Добавить #content в next_image_link () Загрузка скриптов на определенные страницы с использованием PHP в footer.php Отправить сообщение id через ajax и вернуть сообщение

Как получить выбранную таксономию или идентификатор категории при использовании пользовательского ходока?

Я создаю выпадающие taxonomy->child taxonomy где ребенок будет активен только в том случае, если выбран родитель. Все работает отлично, за исключением того, что я использую wp_dropdown_categories для родителя, а значение, которое я получаю, является идентификатором выбранного элемента, а не slug или name.

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

  wp_dropdown_categories(array( 'show_count' => 1, 'selected' => 0, 'hierarchical' => 1, 'depth' => 1, 'hide_empty' => 0, 'tab_index' => $tabindex, 'class' => 'gt-select', 'show_option_none' => 'Select Product', 'name' => 'cat', 'id' => 'my-product', 'taxonomy' => 'products', 'walker' => new Walker_CategoryDropdown_Custom(), )); 

Код таксономии детей:

 $cat_id = sanitize_text_field($_POST['cat']); $cat_query = "child_of={$cat_id}&hide_empty=0&taxonomy=products"; $categories = get_categories($cat_query); $options = '<option value="-1">Select Color</option>'; foreach ($categories as $cat) { $name = $cat->name; $value = $cat->term_id; $label = "{$cat->cat_name} ({$cat->category_count})"; $options .= "<option value=\"{$name}\" data-value=\"{$value}\">{$label}</option>"; } $return = array( 'options' => $options, ); 

Проблема с использованием Custom Walker заключается в том, что теперь вместо получения идентификатора здесь:

 $cat_id = sanitize_text_field($_POST['cat']); 

Я получаю имя родительской категории или slug, если я wp_dropdown_categories() , все работает отлично, но wp_dropdown_categories() новую запись с идентификационным номером в категории вместо обновления существующего.

Я добавляю Custom Walker здесь только для справки:

 class Walker_CategoryDropdown_Custom extends Walker_CategoryDropdown { function start_el(&$output , $category , $depth , $args) { $pad = str_repeat(' ' , $depth * 3);$cat_name = apply_filters('list_cats' , $category->name , $category); $output .= "\t<option class=\"level-$depth\" value=\"" . $category->name . "\" data-value=\"" . $category->term_id . "\""; if ( $category->term_id == $args[ 'selected' ] ) $output .= ' selected="selected"'; $output .= '>'; $output .= $pad . $cat_name; if ( $args[ 'show_count' ] ) $output .= ' (' . $category->count . ')'; if ( array_key_exists('show_last_update', $args) && $args[ 'show_last_update' ] ) { $format = 'Ym-d'; $output .= ' ' . gmdate($format , $category->last_update_timestamp); } $output .= "</option>\n"; } } 

Значение выходного сигнала:

 value=\"" . $category->name . "\" 

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

Если я изменю это в ходунке, чтобы:

 value=\"" . $category->term_id . "\" 

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

В основном мне нужно найти способ получить выделенный идентификатор категории из wp_dropdown_categories() и передать это здесь:

 $cat_id = sanitize_text_field($_POST['cat']);