2016-08-09 9 views
2

Ich habe folgende Wordpress Suche Setup:Wordpress Suche funktioniert nicht mit Suchbegriff mehr als 87 Zeichen

search_form.php

<input type="text" class="search_form clearable" name="s" id="s" autocomplete="off" placeholder="Search Text" /> 

search.php

<?php if (have_posts() && strlen(trim(get_search_query())) != 0) : 
     while (have_posts()) : 
     set_query_var('boxclass', 'full horizontal'); 
       the_post(); 
       . 
       . 
       . 
     // If no content, include the "No posts found" template. 
     else : 
      echo '<div>No search results found</div>'; 
     endif; 
    ?> 

Jetzt

Wenn ich einen Text von Zeichen suche, sagen Sie:

"Lorem ipsum dolor sit amét, consectetuer adipiscing elit. Änean commodo ligula eget dolor. Aeneanische Massa. Cum socians natoque penatibus und magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec ped justo, fringilla vel, aliquet nec, vulputat eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullull dictum felis eu pedes mollis pretium. Ganze Zahl Cras dapibus. Vivamus elementum sempre nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat "

Ein Post Ergebnis gefunden wird

Wenn ich Textzeichenfolge von Zeichen die auch existieren in der Post, sagen suchen.
" Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Änean commodo ligula eget dolor. Aeneanische Massa. Cum socians natoque penatibus und magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec ped justo, fringilla vel, aliquet nec, vulputat eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullull dictum felis eu pedes mollis pretium. Ganze Zahl Cras dapibus. Vivamus elementum sempre nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequata“

Es gibt: Keine Suchergebnisse gefunden

Wie dieses Problem zu beheben Gibt es eine Grenze für Wordpress Suchbegriffs Länge

Antwort

1

ich das Thema für das Problem gefunden. Das Problem liegt in WP Core-Datei, in der die eigentliche Suche stattfindet, dh

wp-includes/query.php => Funktion parse_search() {.....}

Problem war unter:

if (empty($q['search_terms']) || count($q['search_terms']) > 9){      
        $q['search_terms'] = array($q['s']); 
        } 

dh als pro WP Core-Methode, wenn Such-String hat alle Wörter es also die Suchbegriffe '(ausgenommen wenn/der/von Wörtern vom Typ etc unter der Funktion parse_search_terms() in der Abfrage gefiltert wird.php) zählen:

  • 1-9, wird die Suche Zeichenfolge aufgeteilt auf einzelne Wörter und alle Suchbegriffe einzeln durchsucht werden (LIKE-Klausel) in der Beiträge Tabellentitel und Inhalt, und diese sind UNDverknüpft zusammen

Für ex:

((test_posts.post_title LIKE '%Officers%') OR (test_posts.post_content LIKE '%Officers%')) AND ((test_posts.post_title LIKE '%Manager%') OR (test_posts.post_content LIKE '%Manager%')) 
  • 0 oder> 9, der Suchbegriff ist die Suche als eine einzige vollständige Zeichenfolge in der DB

Für ex.

((test_posts.post_title LIKE '%Officers and Managers are working and coordinating into an atmosphere of healthy development in the year 1982 of bright age%') OR (test_posts.post_content LIKE '%Officers and Managers are working and coordinating into an atmosphere of healthy development in the year 1982 of bright age%')) 

nun in meinem Fall * In 86 Zeichen war meine Suchbegriffe Array Zahl 9 und damit in SQL DB jeder Suchbegriff wurde separat durchsucht und alle Suche waren „AND“ ed zusammen. * In 87 Zeichen war die Anzahl der Suchbegriffe für Suchanfragen 10, daher wurde der endgültige Suchbegriff NICHT in einzelne Wörter aufgeteilt und als einzelne Zeichenfolge durchsucht. Und da die Zeichenkette in der DB ein html-Tag dazwischen hatte, gab es als einzige Zeichenkette keinen Post als Ergebnis.

Also war es nicht die Anzahl der Zeichen, aber die Anzahl der Wörter in $ q ['search_terms'], die den logischen Unterschied ausgab.

Hoffe, dass es helps.Thanks

2

Es sieht aus wie du bist? PHP max Parameter legth Grenze trifft, nicht auf Wordpress zusammen.

sehen Sie diese Max size of URL parameters in _GET

+0

dank kkarpieszuk..exploring diese weitere – zeetit

+0

ich noch nicht in der Lage bin keine offizielle Artikel definieren die maximale Größe von URL-Parameter in _GET – zeetit

+0

finden @ztit Sie dies überprüfen können: http: // php.net/manual/fr/reserved.variables.get.php#101469 Auflösung ist ähnlich dem Link in Antwort. –

Verwandte Themen