Autocomplete oder Vorschläge von Post-Titeln in Plugin

Ich habe versucht, die “vorschlagen” -function in einem Plugin in WordPress zu verwenden. Ich habe einen benutzerdefinierten Typ, und wenn ich einen neuen Beitrag erstelle, benutze ich ein Texteingabe-Meta-Feld, um innerhalb der Titel anderer Beiträge desselben Typs zu schreiben. Ich möchte die suggest-function verwenden, um die Titel des Posts, den ein Benutzer gerade schreibt, automatisch zu vervollständigen. Ich habe viel gesucht und habe das in meinem Plugin hinzugefügt:

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() { ?>  var se_ajax_url = ''; jQuery(document).ready(function() { jQuery('#requisitos_curso_disc').suggest(se_ajax_url + '?action=se_lookup', {minchars:2}); });  esc_like($_REQUEST['q']); $loop = new WP_Query( 's=' . $search ); while( $loop->have_posts() ) { $loop->the_post(); echo get_the_title()."\n"; } wp_reset_query(); wp_die(); } 

Aber es funktioniert nicht. Hilfe bitte?

Solutions Collecting From Web of "Autocomplete oder Vorschläge von Post-Titeln in Plugin"

Um ein Skript richtig einzuordnen, müssen Sie das wp_enqueue_script wie folgt verwenden :

 wp_enqueue_script( 'suggest', get_template_directory_uri() . '/js/path/to/suggest.js', array('jquery'), '1.0.0', true ); 

Der zweite Parameter ist der Pfad zu Ihrer JavaScript-Datei, der dritte Parameter sind die Abhängigkeiten, auf die das Skript angewiesen ist (da es sich um ein jquery-Plugin handelt, das nach jquery geladen werden muss).

Wenn Sie dies verwenden , ist Ihr Aufruf zum Suggest Plugin leider falsch. Sie sollten die Begriffe zuerst holen.

Ich empfehle Ihnen persönlich , jquery ui Autocomplete zu verwenden . Ich habe es so umgesetzt:

 function my_autocomplete() { $query = new WP_Query(array('post_type'=>'page','posts_per_page'=>-1)); $tab = array(); foreach ($query->posts as $p) { $tab[] =array('value'=>$p->post_title,'url'=>get_the_permalink($p)); } die(json_encode($tab)); } add_action( 'wp_ajax_nopriv_my_autocomplete', 'my_autocomplete' ); add_action( 'wp_ajax_my_autocomplete', 'my_autocomplete' ); 

Der obige Code ist in meiner functions.php (da Sie ein Plugin machen, kann es in Ihrem Plugin sein). Sie können post_type zu dem ändern, was Sie abfragen möchten. Du musst auch jquery ui in die Warteschlange stellen, was folgendermaßen geschieht:

 wp_register_script('jqui', 'https://code.jquery.com/ui/1.11.4/jquery-ui.min.js', array('jquery')); // Conditional script(s) wp_enqueue_script('jqui'); // Enqueue it! 

Dann in meiner Fußzeile.php habe ich

  

Um die Ajax-URL zu definieren, die von der Autovervollständigung benötigt wird. Schließlich der eigentliche JavaScript-Code zur automatischen Vervollständigung (vorausgesetzt, Ihre Eingabe enthält die classnsucheingabe):

  var data = { action : 'my_autocomplete' } $.post(ajaxUrl,data,function(res){ $( ".search-input" ).autocomplete({ minLength: 0, source: function(request, response) { var results = $.ui.autocomplete.filter(res, request.term); response(results.slice(0, 10)); } }) .autocomplete( "instance" )._renderItem = function( ul, item ) { return $( "
  • " ) .append( "" + item.value +"" ) .appendTo( ul ); }; },'JSON');
  • Wenn es also geladen wird, ruft es den gesamten Seitentitel ab und stellt Ihre .search-input-Vervollständigung mit der Seiten-URL bereit. Einstellungen hier beschränkt die Autocomplete-Ergebnisse auf 10, um gigantische Listen zu vermeiden.

    Diese Lösung wird möglicherweise nicht angepasst, wenn eine große Anzahl von Seiten vorhanden ist.

    Hoffe es wird dir helfen.