Собственно, уже перерыл все что мог, насколько мой гугл мне позволил
Есть таксономия для типа записи, которая определяет местоположение человека
В админке это области и дети областей - населенные пункты
Выглядит как-то так:
Вывожу селектом с помощью такого кода:
Код
if ( is_tax() ) {
$queried_object = get_queried_object();
$this_category_id = $queried_object->term_id;
$selected = $queried_object->slug;
} else {
$this_category_id = '';
$selected = '';
}
//echo $selected;
$args = array(
'show_option_all' => esc_html__( 'Всі регiони або населенні пункти', 'youth-worker' ),
//'show_option_none' => __( 'Всі регiони', 'youth-worker' ),
'option_none_value' => '',
'orderby' => 'name',
'show_count' => 1,
'echo' => 0,
'hide_empty' => 0,
'hide_if_empty' => 1,
'hierarchical' => 1,
'value_field' => 'slug',
'depth' => 1,
'child_of' => $this_category_id,
'name' => 'volunteers-location',
'class' => 'volunteers-location',
'taxonomy' => 'volunteers-location',
//'selected' => $selected,
);
$dropdowncats = wp_dropdown_categories( $args );
$dropdown_replace = "<select$1 onchange='return this.form.submit()'>";
$dropdowncats = preg_replace( '#<select([^>]*)>#', $dropdown_replace, $dropdowncats );
?>
<?php if ( $dropdowncats ) : ?>
<form id="category-select" class="category-select" action="<?php echo esc_url( home_url( '/' ) ); ?>" method="get">
<div class="search-category-wrapper">
<div class="select-wrapper">
<?php echo $dropdowncats; ?>
</div>
</div>
<noscript>
<input type="submit" value="<?php _e('Шукати', 'youth-worker') ?>">
</noscript>
</form>
<?php endif; ?>
так как выводится оно не только на странице таксономии, вначале сделана проверка.
Я выбираю например волынскую область и мне открывает уже страницу архива таксономии, в которой тот же код, я его тяну из темплейта. Только теперь в селекте городА волынской области. Нажав на город идет переход на страницу города и селект скрывается.
урлы при этом такого вида:
youth-worker.loc/volunteers-location/vynnyczkaya-oblast
И вроде все работает, но кое что не работает. Если выбрать в селекте Всі регiони, то кидает и урл такого вида:
youth-worker.loc/?volunteers-location=0
если убрать строчку 'value_field' => 'slug' в аргументах, то все переходы идут на 404 и урлы такого вида:
youth-worker.loc/?volunteers-location=58
Также не получается настроить опцию аргумент selected, потому что у меня как бы от родителя идет, если убрать 'child_of', то начинает работать selected, но естественно перестает работать как надо иерархия, показывает только главные категории.
Я что-то упускаю, но глаз уже замылен.
Мне нужно наверно чтото передать в 'option_none_value' для правильного возврата в начало всех начал, но я не понимаю что.
С селектедом тоже получается нужно передать как-то именно текущий слаг, но он же появляется уже после формирования выпадающего списка
Я уже смотрел и варианты с get_terms и get_categories, но пока что лучше всего подходит текущий вариант кроме этих мелочей.