Suche nach Post-Typ-Anhänge Titel

Ich habe eine Seite, auf der ich alle Anlagen einer Seite in einer Tabelle mit id=10 zeige.

Ich habe Hunderte Anhänge und möchte ein AJAX-Suchformular implementieren, das den Anhang als Schlüssel für die Suche verwendet.

Tatsächlich besteht das Problem nicht in der Implementierung des AJAX-Aufrufs, sondern in der Abfrage, die die Anlagenliste zurückgibt.

Solutions Collecting From Web of "Suche nach Post-Typ-Anhänge Titel"

Sie sollten versuchen, den Parameter s (search) als Parameter für Ihre benutzerdefinierte Abfrage anzuwenden.

Siehe dieses Beispiel hier:

 $query = new WP_Query( 's=keyword' ); 

und Sie können dann eine normale Schleife anwenden, um Ihre Ergebnisse zu durchlaufen. Dies führt auch dazu, dass die String-Übereinstimmung mit dem Operator %keyword% identisch ist, den Sie im Kommentar für die Antwort von @Ravs erwähnt haben.

Siehe Dokumentation hier .

WP_Query wird standardmäßig nicht tun, was Sie wollen. Wenn Sie versuchen, nach post_name zu suchen, post_name Sie eine post_name= die zu streng ist. Wenn Sie den s Parameter verwenden, erhalten Sie eine %term% -Suche über den Post-Namen und den Post-Inhalt und der term wird überall im Wort übereinstimmen, nicht nur am Anfang. Und das ist zu breit für das, was du tust. Und s wird zunehmend weniger effizient, wenn Sie Begriffe hinzufügen, obwohl dies für Sie kein Problem darstellt.

Sie sagen, Sie wollen eine Übereinstimmung, wenn Sie die “ersten n” Buchstaben eingeben, also müssen Sie die Abfrage filtern. Dies sollte es tun.

 function search_filter_right_wild($search) { remove_filter('posts_where','search_filter_right_wild'); global $wpdb; $pattern = "|{$wpdb->posts}.post_name = '([^']*)'|"; $search = preg_replace($pattern,"{$wpdb->posts}.post_name LIKE '$1%'",$search); return $search; } add_filter('posts_where','search_filter_right_wild'); $q = new WP_Query( array( 'name' => 'test', 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => 'inherit' ) ); var_dump($q->request); 

Sie suchen nur nach dem Namen des Beitrags und der Filter fügt nur rechts einen % hinzu, so dass die Platzhalterübereinstimmung nur rechts vom Begriff ist.

Fügen Sie den Filter in Ihrem AJAX-Callback vor der Abfrage hinzu und er wird sich automatisch entfernen (obwohl dieser letzte Teil wahrscheinlich nicht notwendig ist).

Sie fragen sich möglicherweise mögen

 < ?php $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' =>'any', 'post_parent' => 10 ); $attachments = get_posts($args); if ($attachments) { foreach ( $attachments as $attachment ) { if('you title of image'==$attachment->post_title ){ //your code goes here } } } ?> 

Wichtiger Link :

get_posts ()

Ajax Suchformular