Intereting Posts
конвертировать пользовательский запрос в wp_query Действие AJAX возвращает пустой массив сообщений? Обновление поля ACF с помощью внешних данных Как отображать популярные сообщения на странице? Отправьте определенное электронное письмо в HTML, а остальное в текстовом виде w3 общие разрывы минимизации кэша wp_localize_script () Создание отдельных отдельных страниц Проблемы с автозагрузкой классов через sp_autoload_register / возможно, помеха для WP-специфического автозагрузчика Как импортировать пользовательские данные через XML, CSV и т. Д. Точные размеры изображения WordPress 3.9 – Проблема с редактированием нового TinyMCE Измените порядок столбцов для настраиваемого типа сообщений на странице списка admin Как подключиться к img src с помощью HTML-шаблона электронной почты в WordPress электронной почты пользователей WordPress с использованием BCC Пользовательская роль не может удалить пользовательский тип сообщения

Как искать с помощью ajax для точной фразы или слов в поле ввода?

Я слежу за этим, и он работает почти идеально, но он не только набирает заголовки с теми же словами, что и в том, что мы пишем в поле ввода, но при этом находим ВСЕ сообщения независимо от них.

HTML

<input name="usp-title" id="usp-title" type="text" value="" data-required="true" required="required" maxlength="99" placeholder="Type here..." class="usp-input usp-input-title form-control"> 

AJAX

 add_action( 'wp_footer', 'ajax_fetch' ); function ajax_fetch() { ?> <script type="text/javascript"> function fetch(){ console.log(jQuery('#usp-title').val()); jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', exactwords: jQuery('#usp-title').val() }, success: function(data) { var text1; var text1B; var text2; var text2B; jQuery("#datafetch").html(data).promise().done(function(){ text1 = jQuery("#datafetch").find("h2").find("a").html(); text1B = text1.toLowerCase(); text2 = jQuery('#usp-title').val(); text2B = text2.toLowerCase(); console.log(text1B); console.log(text2B); if (text1B != text2B) { jQuery("#componi").removeAttr("disabled", "disabled").show(); jQuery("#fatto").hide(); //jQuery('#datafetch').empty(); } else if (text1B == text2B) { jQuery("#componi").attr("disabled", "disabled").hide(); } }); } }); } </script> 

PHP

 add_action('wp_ajax_data_fetch' , 'data_fetch'); add_action('wp_ajax_nopriv_data_fetch','data_fetch'); function data_fetch(){ $the_query = new WP_Query( array( 'posts_per_page' => 1, 's' => esc_attr( $_POST['usp-title'] ), 'post_type' => 'post' ) ); if( $the_query->have_posts() ) : ?> <div class="jumbotron"> <h4>Abbiamo trovato già delle lezioni con lo stesso titolo,<br>usa una di questa o scrivi un titolo diverso.</h4> </div> <ul class="list-unstyled margin-top-80"> <?php while( $the_query->have_posts() ): $the_query->the_post(); ?> <li> <?php $time = usp_get_meta(false, 'usp-custom-10'); ?> <?php $space = usp_get_meta(false, 'usp-custom-3'); ?> <?php $spaceB = usp_get_meta(false, 'usp-custom-7'); ?> <h2><a target="_blank" href="<?php echo esc_url( post_permalink() ); ?>"><?php the_title();?></a></h2> <p><strong>Spazio:</strong> <?php echo $space;?> <?php echo $spaceB; ?></p> <p><strong>Tempo:</strong> <?php echo $time; ?></p> <?php the_excerpt(); ?> </li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php endif; die(); } 

Как я могу ограничить результаты только тем, который имеет тот же заголовок, что и текст в поле ввода?

Solutions Collecting From Web of "Как искать с помощью ajax для точной фразы или слов в поле ввода?"

Это скорее хак, но я не мог найти другого пути, попробовал exact= "true" и sentence="true" качестве параметров в запросе, но все же у меня были все результаты не только для точного соответствия. Поэтому, поскольку у меня были результаты в виде list , я делаю проверку в DOM и .val() все, что точно не совпадает с .val()

 function fetch(){ jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', exactwords: jQuery('#usp-title').val() }, success: function(data) { var text2; var text2B; text2 = jQuery('#usp-title').val(); text2B = text2.toLowerCase(); jQuery("#datafetch").html(data).promise().done(function(){ jQuery("#datafetch ul li h2 a").each(function() { var $this = jQuery(this); if ($this.text().toLowerCase() !== text2B) { $this.parent().parent().remove(); jQuery(".jumbotron").remove(); jQuery("#componi").removeAttr("disabled", "disabled").show(); } else if ($this.text().toLowerCase() == text2B) { jQuery("#componi").attr("disabled", "disabled").hide(); } }); }); } }); }