Suche Tags in CPTs

Ich kann nicht herausfinden, wie man Tags in eine WordPress-Suche einbezieht. Wenn ich zum Beispiel nach ‘apple’ suche, würde ich gerne Posts mit ‘apple’ im Titel oder im Inhalt (Standard-Wordpress-functionalität) sowie Posts mit dem Tag ‘apple’ erhalten; Wenn ich die 'tag' => $keyword Zeile 'tag' => $keyword in WP_query einfüge, bekomme ich bei jeder Suche keine Ergebnisse.

 $keyword = get_search_query(); $args = array( 'post_type' => array('case_studies', 'news', 'events'), 'post_status' => 'publish', 's' => $keyword, 'tag' => $keyword, ); $query = new WP_Query($args); 

Wenn ich es entferne, bekomme ich Ergebnisse wie immer (aber ohne Beiträge mit dem Schlüsselwort in seinen Tags)

Solutions Collecting From Web of "Suche Tags in CPTs"

Dies funktioniert nur, wenn das Keyword genau mit dem Tag übereinstimmt, nach dem Sie suchen, und leider werden Tag-Daten standardmäßig nicht in der WordPress-Suche indiziert, sodass auch nichts ausgegeben wird. Wenn Sie die Tags indexieren und in die Suchergebnisse einschließen möchten, sollten Sie ein Plug-in verwenden. Relevanassi könnte den Trick machen, aber wenn es Ihnen nichts ausmacht, ein wenig zu investieren , dann würde SearchWP es definitiv tun, da es den gesamten Inhalt, einschließlich der Tags und benutzerdefinierten Felder, indiziert und Ihnen jedes Gewicht zuweisen kann. Sie könnten zum Beispiel Tags mit der höchsten Gewichtung versehen, oder wenn Sie nur Tags durchsuchen wollen, geben Sie einfach alles andere ein Gewicht von 0.

Ihr Problem besteht höchstwahrscheinlich darin, dass Sie Ihre Suchergebnisse annullieren.

 $keyword = get_search_query(); 

Oben greifen Sie auf die bereitgestellte Suchvariable zu

 $args = array( 'post_type' => array('case_studies', 'news', 'events'), 'post_status' => 'publish', 's' => $keyword, 'tag' => $keyword, ); 

Hier führen Sie eine Abfrage aus, die ALLE der folgenden Bedingungen als wahr voraussetzt

  • Der Post-Typ muss case_studies, news oder events sein
  • Der Post-Status muss veröffentlicht werden (publish)
  • Der Titel (oder möglicherweise der Inhalt) muss das gesuchte Stichwort enthalten
  • Der Beitrag muss ein Tag enthalten, das genau wie der Suchbegriff benannt ist

Lassen Sie die s oder tag Deklaration fallen, und es geht Ihnen vielleicht besser.

Jedes Element, das Sie in Ihre WP_Query-Argumentenliste eingeben, muss True sein, damit ein Ergebnis angezeigt wird. (Unterabfragen wie Steuer- und Termabfragen haben eine spezielle Syntax, um ODER-Abfragen für ihre Daten zu schreiben.)

Wenn Sie nur nach Posts mit einem bestimmten Tag suchen möchten, versuchen Sie Folgendes.

 $keyword = strtolower( str_replace( array(' ','_'), '-', get_search_query() ) ); $args = array( 'post_type' => array('case_studies', 'news', 'events'), 'post_status' => 'publish', 'tag' => $keyword, ); 

Das gibt Ihnen eine Übereinstimmung, wenn der Tag-Slug genau mit der gesamten Suche übereinstimmt.

str_to_lower wird als Tag-Suche verwendet. Tag-Slugs, keine Namen und Tag-Slugs sind Kleinbuchstaben mit Bindestrichen (der Grund für str_replace, der alle Leerzeichen und Unterstriche durch Bindestriche ersetzt).

Was versuchst du zu machen? Wenn Sie das klar in Ihrer Frage angeben können, kann vielleicht einer von uns eine Lösung für das Problem für Sie bereitstellen.

Dies ist ein ziemlich ungewöhnlicher Fall und auch einer, der bei Ihnen scheitern kann und ziemlich unexpected Ergebnisse gibt

Standardmäßig ist dies nicht nur möglich. Ich habe wirklich versucht, dies zu überdenken, und ich kann keine Lösung finden, die funktioniert, indem einfach eine Abfrage verwendet wird, außer vielleicht mithilfe einer benutzerdefinierten SQL-Abfrage oder der in WP_Query bereitgestellten WP_Query . Leider ist mein SQL immer noch sehr schlecht, daher kann ich dir hier nicht helfen. Sie müssen sich die beiden angegebenen Links ansehen

Sie müssen wahrscheinlich einige Überprüfungen durchführen, um zu überprüfen, ob ein Tag vorhanden ist, bevor Sie es tatsächlich verwenden. Hier können Sie term_exisist , um zu testen, ob das Tag existiert.

Ich dachte auch darüber nach, die Suchseite in zwei Abschnitte zu unterteilen, der erste Abschnitt zeigt die Beiträge aus der Standardsuche, die Hauptabfrage. Der zweite Abschnitt wird eine benutzerdefinierte Abfrage sein, die Beiträge von dem spezifischen Tag abrufen wird. Hier würden Sie einfach den Tag-Parameter verwenden und den Suchbegriff als Wert verwenden. Wie bereits erwähnt, könnte dies eine gute Idee sein, zuerst zu prüfen, ob das Tag tatsächlich existiert.

Der Nachteil hier sind doppelte Beiträge, also müssen Sie vielleicht auch nach diesem suchen.

Es gibt wirklich eine Menge, mit der du hier herumspielen kannst und das sind nur grundlegende Ideen, die ich dir gegeben habe. Fühlen Sie sich frei, Ihre Lösung zu posten und akzeptieren Sie es, wenn Sie in der Lage sind, dies zu lösen 🙂