Intereting Posts
Что может быть причиной того, что я не могу получить доступ к другим страницам моего сайта localhost wordpress, кроме главной страницы? Изменить текст уведомления по почте по почте WP SES Plugin как мы можем использовать CC в функции wp_admin? Foreach внутри shortcode не работает как запланировано Добавьте «показ сообщений x x x y» в пользовательском типе post type paginated loop Как изменить значки WordPress? Меню навигации с детьми, отображаемыми только для текущей страницы Публиковать сообщения автора только с разрешения редактора? Получение этого кода для работы в Multisite WordPress SSL (https) не работает с пользовательской постоянной ссылкой Использование WordPress в качестве библиотеки документов Добавить управляемые пользователем заголовки в пользовательские меню? get_post_meta unserialize issue – retuns boolean (false) Как узнать, какая страница архива активна Как добавить класс ко всем боковым панелям, чтобы позволить Google Custom Search Engine не индексировать контент?

jQuery autocomplete: извлекается термин slug при выборе имени

Я пытаюсь настроить персонализированную форму поиска, которая позволит посетителю искать сообщения, связанные с терминами нескольких таксономий. Часть автозаполнения, похоже, работает нормально, но я понятия не имею, как получить термин slug, чтобы я мог построить строку запроса, как только посетитель выбрал имя термина.

Вот HTML:

<fieldset> <div class=""> <label for="collection">Collections : </label> <input id="collection"> </div> <div class=""> <label for="sujet">Sujets : </label> <input id="sujet"> </div> <div class=""> <label for="lieu">Lieux : </label> <input id="lieu"> </div> <div class=""> <label for="tag_perso">Mots-clés : </label> <input id="tag_perso"> </div> </fieldset> 

Javascript:

 jQuery(function() { jQuery( "#collection" ).autocomplete({ source: availableTags.collection }); jQuery( "#sujet" ).autocomplete({ source: availableTags.sujet }); jQuery( "#lieu" ).autocomplete({ source: availableTags.lieu }); jQuery( "#tag_perso" ).autocomplete({ source: availableTags.tag_perso }); 

и PHP:

 function get_autocomplete_source($taxonomy) { $args = array( 'hide_empty' => 0, 'fields' => 'all', ); $term_objects = get_terms($taxonomy, $args); $terms = array(); foreach ($term_objects as $term_object) { $return_object = new stdClass; $return_object->value = $term_object->name; $return_object->slug = $term_object->slug; $terms[] = $return_object; } return $terms;} 

сценарий был локализован следующим образом:

 wp_localize_script('cevennes_autocomplete', 'availableTags', array( 'collection' => get_autocomplete_source('1-collection'), 'sujet' => get_autocomplete_source('2-sujet'), 'lieu' => get_autocomplete_source('3-lieu'), 'tag_perso' => get_autocomplete_source('4-tag_perso') )); 

Я немного потерял Javascript. Может ли кто-нибудь помочь? Большое спасибо.

Вот мое решение:

1.HTML: я определил два поля для каждой таксономии, один вид для выбора / автозавершения термина label; второй, скрытый, для получения соответствующего значения (термин slug). Для типичной категории это выглядит так:

 <input id="collection" type="text" placeholder="Collection"> <input id="collection-value" class="hidden-field" name="1-collection"> 

2.Javascript: focus событий и select по умолчанию были изменены для заполнения полей label и value :

 jQuery( "#collection" ).autocomplete({ source: availableTags.collection, focus: function(event, ui) { // prevent autocomplete from updating the textbox event.preventDefault(); // manually update the textbox jQuery(this).val(ui.item.label); }, select: function(event, ui) { // prevent autocomplete from updating the textbox event.preventDefault(); // manually update the textbox and hidden field jQuery(this).val(ui.item.label); jQuery("#collection-value").val(ui.item.value); } }); 

3.PHP имеет: 2 строки были изменены, чтобы вернуть label и value :

 $return_object->label = $term_object->name; $return_object->value = $term_object->slug;