Я видел несколько сообщений в блоге на эту тему, но не смог реализовать их с успехом.
Я пробовал следующее (возможно, одно из них - решение, и я немного не в себе):
- https://pagecrafter.com/dropdown-menu-of-all-terms-in-custom-taxonomy-wordpress/
- Wordpress - раскрывающийся список таксономии не работает с иерархическим
- https://www.noelsheppard.co.uk/create-dropdown-list-custom-taxonomy-terms/ (в основном пример 1)
- https://shibashake.com/wordpress-theme/wordpress-custom-taxonomy-input-panels
- наконец, перечитайте this
У меня есть CPT свойств, который имеет три пользовательских таксономии:
- Гости
- Комнаты
- Город (Городская таксономия заполняется с помощью пользовательской функции, которая отслеживает, когда второй CPT [Направления] создает новые сообщения, и добавляет то же имя.в качестве таксономии к записям свойств города)
Я хотел бы убедиться, что при создании сообщения свойства и установке его города выбран только один город (пункт назначения).Я хотел бы использовать раскрывающийся список для этого действия.
Следуя 1-й (или 3-й) ссылке, приведенной выше, я попробовал следующую реализацию:
Функция для инициализации в моем functions.php:
// Creates dropdown taxonomy select for guest taxonomy in Properties.
function dropdown_tax_init(){
$categories = get_categories('taxonomy=city');
$select = "<select name='cat' id='cat' class='top-tags-dropdown'>n";
$select .= "<option value='-1'>Select Tag</option>n";
foreach ($categories as $category) {
if ($category->count > 0) {
$select .= "<option value='" . $category->slug . "'>" . $category->name . "</option>";
}
}
$select .= "</select>";
echo $select;
}
add_action( 'init', 'dropdown_tax_init' );
Я также вызываю js через мой functions.php следующим образом:
function admin_footer_script() {
wp_register_script('dropdown_tax_script', get_template_directory_uri() . '/js/taxonomy-dropdown.js', array('jquery'), '1.0.0'); // Conditional script(s)
wp_enqueue_script('dropdown_tax_script'); // Enqueue it!
}
add_action( 'admin_footer', 'admin_footer_script' );
Наконец, мой js выглядит следующим образом:
var dropdown = document.getElementById("cat");
function onCatChange() {
if (dropdown.options[dropdown.selectedIndex].value != -1) {
location.href = "<?php echo home_url();?>/city/" + dropdown.options[dropdown.selectedIndex].value + "/";
}
}
dropdown.onchange = onCatChange;
Мой javascriptотображается в inspect в нижнем колонтитуле администратора.
Раскрывающийся список мигает при загрузке, но пользовательские таксономии не загружаются, когда у меня есть функция в моей функции. php что-то нарушает загрузку пользовательских таксономий в правой боковой панелив редакторе Гутенберга.Они никогда не появляются.
Рады в подробностях, спасибо.