Suchen Sie nach einer Möglichkeit, Ihre Suchergebnisse auf die Beitragstitel zu beschränken? Obwohl es wahrscheinlich ein Plugin dafür gibt, haben wir einen schnellen Code-Schnipsel erstellt, den Sie verwenden können, um die Suche in WordPress auf Beitragstitel zu beschränken.
Anweisungen:
Sie müssen diesen Code nur zur functions.php-Datei Ihres Themes oder in ein websitespezifisches Plugin einfügen:
function __search_by_title_only( $search, &$wp_query )
{
global $wpdb;
if ( empty( $search ) )
return $search; // skip processing - no search term in query
$q = $wp_query->query_vars;
$n = ! empty( $q['exact'] ) ? '' : '%';
$search =
$searchand = '';
foreach ( (array) $q['search_terms'] as $term ) {
$term = esc_sql( like_escape( $term ) );
$search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
$searchand = ' AND ';
}
if ( ! empty( $search ) ) {
$search = " AND ({$search}) ";
if ( ! is_user_logged_in() )
$search .= " AND ($wpdb->posts.post_password = '') ";
}
return $search;
}
add_filter( 'posts_search', '__search_by_title_only', 500, 2 );
Hinweis: Wenn Sie zum ersten Mal Code-Schnipsel in WordPress hinzufügen, lesen Sie bitte unseren Leitfaden, wie Sie Code-Schnipsel richtig in WordPress hinzufügen, damit Sie Ihre Website nicht versehentlich beschädigen.
Wenn Ihnen dieser Code-Schnipsel gefallen hat, ziehen Sie bitte in Betracht, unsere anderen Artikel auf der Website zu lesen, wie z. B.: 43 beste Fotografie-Themes für WordPress und 11 beste WordPress-Slider-Plugins.
kannst du mir irgendwie helfen... Ich bekomme das mit DIVI THEM nicht zum Laufen
Hallo, danke für diesen Beitrag. Ich habe mich gefragt, ob Sie wissen, wie man den Code anpasst, damit er für einen benutzerdefinierten Beitragstyp funktioniert, insbesondere für WP Job Manager, der Beitragstyp ist: job_listing. Danke.
wie man Leerzeichen bei der Suche ignoriert
z. B. iPhone 7 32 GB
und iPhone 7 32GB
nur mit einem Leerzeichen zwischen 32 und GB ergibt sich ein großer Unterschied bei den Ergebnissen
wie können wir diese Leerzeichen bei der WordPress-Suche ignorieren, indem wir eine Funktion hinzufügen
damit wir die gleichen Ergebnisse von beiden Sucharten erhalten
Bitte um Rat
Mit freundlichen Grüßen
Ihr Code funktioniert gut lokal, noch nicht live getestet, mein PHP und mein Wissen über WordPress sind nicht so gut. Ich habe versucht,
$wpdb->postmeta.page_banner_subtitle mit zu durchsuchen, sowie post_title, bisher ohne Erfolg, außerhalb meines Rahmens. Kann jemand helfen oder mir in die richtige Richtung weisen.
Danke.
ist das für das Frontend oder funktioniert es auch im Backend?
Dies ist für das Frontend.
Funktioniert super! Ausgezeichneter Code-Schnipsel, aber wie würde man die Suche auf Titel von Beiträgen beschränken und nicht auf Titel von Seiten?
Hallo Richard, wir freuen uns, dass es Ihnen gefällt. Der Schnipsel ist speziell für Beitragstitel geschrieben. Sie können sehen, dass er sich auf das Posts CPT bezieht.
Das hat vor einem Monat gut für mich funktioniert.
Jetzt bekomme ich PHP-Fehler.
Hast du vielleicht eine aktualisierte Lösung?
Es ist ein großartiger Code für eine große Website.
Warnung: Parameter 2 für __search_by_title_only() erwartet eine Referenz, Wert gegeben in /wp-includes/class-wp-hook.php in Zeile 303
Sie könnten versuchen, Zeile 1 zu ändern in:
function __search_by_title_only( $search, $wp_query )Warum wird selbst beim Eingeben von Text in das Suchformular nur eine Zeichenbegrenzung von 5 Zeichen angezeigt?
Wie löse ich das?
Danke, aber es funktioniert 100% mit Chrome usw., aber nicht gut (man erhält nur die Hälfte der erwarteten Ergebnisse) mit I.E. (dem weltweit besten Browser), bizarrerweise!
Es könnte sein, dass I.E. ein zusätzliches Problem hat, da dieser Code auf dem Server und nicht im Browser ausgeführt wird.
Hallo, die türkischen und nicht-türkischen Zeichen werden gleich behandelt. Zum Beispiel, wenn ich nach „aşk“ suche, werden vielleicht ask, aşk angezeigt. Wie kann ich das beheben? Ich möchte nur aşk, wenn ich aşk suche. Danke.
Das ist wirklich nützlich – kann es angepasst werden, um sowohl Post- als auch Seitentitel zu durchsuchen?
Das ist wirklich nett! Danke!
code: add_filter( ‘posts_search’, ‘__search_by_title_only’, 500, 2 );
2 Parameter: 500, 2. Was bedeutet das?
500 ist die Priorität und 2 ist die Anzahl der Parameter in der Callback-Funktion.
add_filter( ‘posts_search’, ‘__search_by_title_only’, 500, 2 );
2 Parameter 500, 2. Was bedeutet das?
Ich verstehe nicht viel von PHP, muss ich etwas vor und nach diesem Code einfügen?
Das ist großartig… Ich frage mich, wie ich diesen Code zum Backend-Suchfeld hinzufügen kann. Ich möchte auch im WP-Backend nach Titeln suchen.. 🙂
Danke! 🙂
Hallo,
Das war wirklich großartig.
Du hast gerade mein Problem mit dem geringsten Aufwand von meiner Seite gelöst.
Vielen Dank.
Das ist großartig! Ich habe 2 Suchformulare auf meiner Website. Ist es möglich, diese Funktion nur auf eines der Suchformulare anzuwenden?
Hallo Mister!
Du bist der Beste, vielen Dank
Danke Kevin … genau der Code, nach dem ich gesucht habe …
Cool, freut mich zu hören, dass ich helfen konnte.
Ich bin neu (auch bekannt als „Ich bin schlecht“) in PHP und WordPress. Soll ich diesen Code einfach irgendwo einfügen oder gibt es einen bestimmten Ort, an dem er hingehört oder an dem er vorhandenen Code ersetzt?
Ich habe dies am Ende der functions.php-Seite eingefügt und mein Bildschirm war weiß, also habe ich es entfernt.
Ok, ich habe dies in die WordPress functions.php-Datei und nicht in die des Themes eingefügt. Es funktioniert wie erwartet.
Toller Code! Das bereinigt die WordPress-Suche wirklich. Gibt es eine Möglichkeit, die ersten X Wörter des Beitrags einzuschließen? Vielleicht mit der substr-Funktion?
$content = get_the_content();
$content = strip_tags($content);
echo substr($content, 0, 50);
In Ihrer Suchergebnisvorlage könnten Sie die Menge des angezeigten Textes kürzen, indem Sie das „excerpt“-Template-Tag für ein kürzeres Ergebnis ohne Hacking verwenden.
Das ist großartig! Etwas, das ich gerne sehen würde, ist eine Suchanpassung, die die Ergebnisse auf Titel und Tags beschränkt. Auf diese Weise habe ich die Freiheit, meine Beiträge so zu benennen, wie ich möchte, ohne mir Sorgen machen zu müssen, Schlüsselwort-Suchbegriffe einzufügen.
Freut mich zu hören, dass Ihnen der Ausschnitt gefällt! Wenn Sie Dinge wie Tags usw. so weit treiben wollen, sollten Sie sich das Plugin „Search Everything“ ansehen. Es hat viele Optionen, die Sie konfigurieren können.
funktioniert nicht! 🙁
Welche Version von WordPress verwenden Sie derzeit? Ich teste alles, um sicherzustellen, dass es funktioniert, bevor ich einen Ausschnitt poste. Ich werde mir das noch einmal ansehen, nur um sicherzugehen.
3.2.1
Dies ist die Ausgabe von $search:
UND ( UND (((wpmtx_posts.post_title LIKE ‘%alice%’) ODER
(wpmtx_posts.post_content LIKE ‘%alice%’)) UND ((wpmtx_posts.post_title
LIKE ‘%cooper%’) ODER (wpmtx_posts.post_content LIKE ‘%cooper%’)))
(.post_title LIKE ‘%alice%’) UND (.post_title LIKE ‘%cooper%’) ODER
(.post_title LIKE ‘%alice cooper%’))
habe ein kleines Update gemacht, sehen Sie, ob das die Dinge behebt,
Ja! Jetzt funktioniert es! Vielen Dank!!!
3.2.1
Dies ist die Ausgabe von $search:
UND ( UND (((wpmtx_posts.post_title LIKE ‘%alice%’) ODER
(wpmtx_posts.post_content LIKE ‘%alice%’)) UND ((wpmtx_posts.post_title
LIKE ‘%cooper%’) ODER (wpmtx_posts.post_content LIKE ‘%cooper%’)))
(.post_title LIKE ‘%alice%’) UND (.post_title LIKE ‘%cooper%’) ODER
(.post_title LIKE ‘%alice cooper%’))
[...] [Quelle: WPSNIPP] [...]