Auto-completar ou sugerir automaticamente na lista de títulos de postagem

Eu quero ter uma function auto-completa ou auto-sugestão em um formulário (pesquisa):

Quando um usuário começa a digitar, ele sugere títulos de postagem com texto correspondente.

Gostaria também de exibir alguns meta-dados (um número) que armazenei em relação a cada publicação personalizada. Exemplo:

Se eu digitar “A”, sugiro “Maçãs (13), Aardvarks (51), Astronautas (21)”, etc.

Solutions Collecting From Web of "Auto-completar ou sugerir automaticamente na lista de títulos de postagem"

Sim, isso é possível.

Você pode usar jQuery Auto Suggest que está incluído no WordPress http://codex.wordpress.org/Function_Reference/wp_enqueue_script

Com isso, você pode escrever um formulário que faz uma pesquisa do Ajax para o manipulador de URL do Ajax. No qual você pode adicionar a ação. http://codex.wordpress.org/AJAX_in_Plugins

Então, você pode pesquisar ajax e, em seguida, no lado da ação, você pode apenas executar um get_posts para coincidir com os títulos, ou uma consulta sql crua. E devolver o que é necessário.

Isso deveria ajudar, se eu tiver tempo em breve, eu poderia escrever uma solução de código completo. Mas a maior parte disso é um completo plugin para ajudar a alimentar a pesquisa.

Editar: Aqui vamos, algo assim deve fazê-lo, não o testei, apenas escrevi o topo da minha cabeça. Atualização: Escape do texto inserido, estreito por tipo de postagem personalizado e apenas para postagens publicadas

2012-11-21 Editar: erro de digitação atualizado na amostra de código.

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() { ?>  < ?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(); }