Weitere Informationen und den Download findest du auf der offiziellen Anlaufstelle de.wordpress.org
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21
Like Tree1Likes

Thema: WP_Query mit Suchbegriff

  1. #11
    PostRank: 0
    Registriert seit
    02.05.2013
    Beiträge
    20
    Vielen Dank für deine Mühe.

    Allerdings ergeben deine Code-Beispiele (noch) nicht ganz das, was ich erreichen wollte - aber es kommt der Sache schon um einiges näher, als was ich bisher erreicht habe. Es wird zwar immer die korrekte Gesamt-Anzahl der Suchergebnisse angezeigt, aber es variiert dann von Seite zu Seite der Suchergebnisse die Anzahl der Suchergebnisse pro Kategorie und die Anzahl der Suchergebnisse pro Kategorie stimmt dann auch zum Teil nicht mehr.

    Es scheint so, dass sofern die Anzahl der Suchergebnisse geringer als die maximale Anzahl der Suchergebnisse pro Seite ist (bei mir sind es 5) dein Beispiel funktioniert.

    also zur Verdeutlichung:

    Auf der Suchergebnisseite Nr. 1 zum Suchbegriff xyz kommt raus: 3 Treffer in Kategorie A und 2 Treffer in Kategorie B

    Dann aber wenn ich innerhalb der Suchergebnis-Seiten weiterblättere ändert sich die Anzahl der Treffer pro Kategorie bzw. neue Kategorien kommen dazu.

    Unter http://test.energieundbau.de kann man (vorübergehend) die Problematik direkt auf der Website, um die es geht anschauen. Dazu einfach mal die Suchfunktion z. B. mit "lorem" (ergibt mehrere Suchergebnisse), "blub" oder "test" (ergibt 1 bzw. 2 Ergebnisse) füttern.

  2. #12
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Gut, dann muss das noch etwas weiter entwickelt werden. Stimmt bei "lorem" ein Ergebnis oder sind die alle fehlerhaft? Was ich beim Blättern gesehen habe, danach stimmte wohl eher nichts.

    Werde mich da wohl noch etwas mit beschäftigen, falls es die Zeit erlaubt.

  3. #13
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Habe jetzt nicht genügend Seiten in der Testumgebung bzw. "und" ist nicht gerade der ideale Suchbegriff, um mit Tests Abweichungen zu ermitteln. Müsste mir da erst einmal mehr Kategorien mit auffälligeren Suchwörtern zulegen.

    PHP-Code:
    <?php
    /* erhöhen auf 20 Suchergebnisse pro Seite */
    $wp_query->set("posts_per_page"20);
    $anzahl  $wp_query->found_posts;
    $eingabe $wp_query->query["s"];
    $alleps  $wp_query->query_vars["posts_per_page"];

    echo 
    $alleps." Ergebnisse pro Seite<br />\n<br />\n".
         
    "Suchbegriff: ".esc_html($eingabe)."<br />\n".
         
    "Treffer insgesamt: ".esc_html($anzahl)."<br />\n<br />\n";

    for (
    $i 0$i $anzahl$i++) { ...
    ...
    ...
    }

    /*
    20 Ergebnisse pro Seite

    Suchbegriff: und
    Treffer insgesamt: 13

    11 Treffer in der Kategorie: Allgemein
    1 Treffer in der Kategorie: Plugins
    1 Treffer in der Kategorie: Ohne Kategorie
    */
    ?>
    Dann könnte man die Anzahl heruntersetzen und dann mit den Ergebnissen der Blätterseiten vergleichen, wo da was aus dem Ruder läuft. Alles andere wäre für mich jetzt beinahe so wie herumraten.

  4. #14
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Wobei diese Zeile nicht funktioniert:

    PHP-Code:
    $wp_query->set("posts_per_page"20); 
    Doch so:

    PHP-Code:
    query_posts($query_string."&showposts=20");

    /* Kontrolle */
    $alleps $wp_query->query_vars["posts_per_page"];
    echo 
    $alleps." Ergebnisse pro Seite<br />\n<br />\n"
    So langsam begreife ich das eine oder andere.

  5. #15
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Die für einen Halbwissenden mit Abstand einfachste Lösung fiel mir heute Morgen nach dem Erwachen ein. Nur "s" übernehmen und mit s die Datenbank erneut abzufragen. Dabei könnte SQL gleich entsprechend formuliert werden. Und dabei wird dann ja auch ein neues WP_Query Objekt erzeugt, was dann beinahe einen Sinn ergibt.

    $search = new WP_Query($search_query);
    http://codex.wordpress.org/Creating_a_Search_Page

    Die begonnene Variante muss aber ebenfalls funktionieren, denn die DB-Abfrage wurde ja bereits ausgeführt und ist abgreifbar.

    Wie hast Du das mit der Pagnitation bzw. mit der Blätterfunktion gelöst?

  6. #16
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Wenn ich jetzt die search.php ändere, um eine erneute Abfrage zu senden, dann ist die einfache Ausgabe erst einmal wieder relativ leicht realisierbar. Doch die ID lässt sich scheinbar nur über die Tabelle wp_term_relationships der ID einer Kategorie zuordnen und der ID der Kategorie müsste dann über der Tabelle wp_terms der Name einer Kategorie zugeordnet werden, falls ich das richtig verstehen sollte.

    Und wie müsste der SQL-Code aussehen, um so eine verknüpfte Anfrage an die DB zu senden? Da hätte ich wohl drei Tage zu tun, so fit bin ich in SQL nicht unbedingt.

    Die search.php sieht augenblicklich so aus:

    PHP-Code:
    get_header(); ?>

        <section id="primary" class="site-content">
            <div id="content" role="main">

    <?php
    $anzahl  
    $wp_query->found_posts;
    $gesucht $wp_query->query["s"];

    echo 
    $anzahl." Treffer mit ".$gesucht."<br />\n<br />\n";

    if (
    $anzahl 0) {

        
    $table $wpdb->prefix."posts";
        
    $suche $wpdb->get_results("
                        SELECT * FROM "
    .$table."
                        WHERE post_title LIKE '%"
    .$gesucht."%'
                        OR post_content LIKE '%"
    .$gesucht."%'");

        foreach (
    $suche as $detail) {

            if (isset(
    $detail->post_title)) {
                echo 
    "ID: ".$detail->ID." - ".
                     
    "Titel: ".$detail->post_title."<br />\n";
            }
        }
    }

    ?>
            </div><!-- #content -->
        </section><!-- #primary -->

    <?php get_sidebar(); ?>
    <?php get_footer
    (); ?>
    Geändert von Melewo (06.10.2013 um 10:09 Uhr)

  7. #17
    PostRank: 10 Avatar von bgeissler
    Registriert seit
    06.08.2006
    Ort
    Wiesloch
    Beiträge
    4.406
    Überlesen,
    gelöscht.

  8. #18
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Habe mal das Forum gewechselt, weil meine Versuche eine verknüpfte Anfrage auszuführen, die scheiterten bisher.

    http://forum.joergkrusesweb.de/verkn...-t-4454-1.html

  9. #19
    formateins
    Gast
    SQL kann ich Dir nicht beibringen, aber mal mit einem JOIN gearbeitet? Anonsten hier mal ein Denkanstoß:

    Code:
    $meta_query = array();
    if (!empty($s)) {
        $meta_query[] = array(
             'key' => 'meinkey',
             'value' => $s ,
             'compare' => 'LIKE'
        )
    }
    
    // Das Array oben einfach entsprechend ergänzen
    
    
    $meineargs = array(
            'post_type' => 'post',
            'relation' => 'AND',
            'meta_query' => $meta_query
    )
    $posts_suche = new WP_Query( $meineargs );
    Gültige compare-values findest Du im Codex. Ich hab sowas umgesetzt, aber im Rahmen eines Plugins und mit eigenen Queries, da hier Wordpress (respektive die abgewandelte ez-sql-Klasse) einfach Grenzen hat.
    Melewo likes this.

  10. #20
    PostRank: 10
    Registriert seit
    08.07.2013
    Beiträge
    3.097
    Zitat Zitat von formateins Beitrag anzeigen
    aber mal mit einem JOIN gearbeitet?
    Ja, heute, hatte ich ja schon längere Zeit vor mich da mal einzuarbeiten, doch vermutlich war das Beispiel gleich wieder etwas zu viel des Guten. Bisher ging das bei mir meist mit einer Tabelle ab, was ich so für den Eigenbedarf programmierte.

    Ich danke Dir für Deinen Denkanstoß.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •