Autocomplete для заголовков через ajax – переделать прошлый пост от like_escape ()

Я пытаюсь создать поле ввода, которое может автозаполнять только заголовок из CPT. Они не обязательно должны быть связаны, им просто нужно вывести заголовки cpt в алфавитном порядке и выполнить поиск с первых букв.

Я нашел отличный пост в stackexchange, но он старый, и он использует as_escape (), который устарел. Я понимаю, что теперь вы должны использовать esc_like (). Я надеялся, что кто-то может указать мне в правильном направлении, как перейти от like_escape () к esc_like () из кода ниже?

add_action('wp_enqueue_scripts', 'se_wp_enqueue_scripts'); function se_wp_enqueue_scripts() { wp_enqueue_script('suggest'); } add_action('wp_head', 'se_wp_head'); function se_wp_head() { ?> <script type="text/javascript"> var se_ajax_url = '<?php echo admin_url('admin-ajax.php'); ?>'; jQuery(document).ready(function() { jQuery('#se_search_element_id').suggest(se_ajax_url + '?action=se_lookup'); }); </script> <?php } add_action('wp_ajax_se_lookup', 'se_lookup'); add_action('wp_ajax_nopriv_se_lookup', 'se_lookup'); function se_lookup() { global $wpdb; $search = like_escape($_REQUEST['q']); $query = 'SELECT ID,post_title FROM ' . $wpdb->posts . ' WHERE post_title LIKE \'' . $search . '%\' AND post_type = \'post_type_name\' AND post_status = \'publish\' ORDER BY post_title ASC'; foreach ($wpdb->get_results($query) as $row) { $post_title = $row->post_title; $id = $row->ID; $meta = get_post_meta($id, 'YOUR_METANAME', TRUE); echo $post_title . ' (' . $meta . ')' . "\n"; } die(); } 

Оригинальная почта и кредит на следующее:

Автозаполнение или автоматическое предложение из списка заголовков сообщений

$search = like_escape($_REQUEST['q']); с

 $search = $wpdb->esc_like( $_REQUEST['q'] ); 

(Обратите внимание, что $_REQUEST имеет стандартное WP magic_quotes_gpc экранирование).

Для справки, вот точный код, который я ввел в «functions.php»:

 add_action('wp_enqueue_scripts', 'se_wp_enqueue_scripts'); function se_wp_enqueue_scripts() { wp_enqueue_script('suggest'); } add_action('wp_footer', 'se_wp_head'); function se_wp_head() { ?> Search: <input id="se_search_element_id" type="text"> <script type="text/javascript"> var se_ajax_url = '<?php echo admin_url('admin-ajax.php'); ?>'; jQuery(document).ready(function() { jQuery('#se_search_element_id').suggest(se_ajax_url + '?action=se_lookup', {minchars:1}); }); </script> <?php } add_action('wp_ajax_se_lookup', 'se_lookup'); add_action('wp_ajax_nopriv_se_lookup', 'se_lookup'); function se_lookup() { global $wpdb; $search = $wpdb->esc_like($_REQUEST['q']); $query = 'SELECT ID,post_title FROM ' . $wpdb->posts . ' WHERE post_title LIKE \'' . $search . '%\' AND post_type = \'post\' AND post_status = \'publish\' ORDER BY post_title ASC'; $rows = $wpdb->get_results($query); foreach ($rows as $row) { $post_title = $row->post_title; $id = $row->ID; echo $post_title, "\n"; } wp_die(); } 

Обратите внимание, что поле предложений просто появляется как список, поэтому потребуется некоторое стилизация …