it-swarm.com.de

Suchergebnisse sortiert nach Beitragstypen

Ich arbeite an einer Website mit mehreren Beitragstypen - um genau zu sein 4 - und ich versuche, die Suchergebnisseite so einzurichten, dass die Ergebnisse nach Beitragstypen gefiltert/sortiert werden.

Wenn eine Person beispielsweise nach einem Begriff sucht, den sie auf die Seite mit den Ergebnissen führt, werden alle gefundenen Beiträge aller Beitragstypen angezeigt. Oben befinden sich jedoch die verschiedenen Links mit den Namen der Beitragstypen, die die Ergebnisse sortieren und nur den jeweiligen Beitrag anzeigen Geben Sie den Beitrag ein. Im Moment habe ich mehrere Schleifen auf der Suchergebnisseite für jeden Beitragstyp, aber wenn ich es teste, zeigen die Schleifen alle die gleichen Ergebnisse, obwohl jede Schleife eine Abfrage für einen anderen Beitragstyp hat.

Wie behebe ich die Schleife so, dass nur die Suchergebnisse dieses Beitragstyps angezeigt werden? Ich möchte keine anderen Suchformulare haben oder die Abfrage zurücksetzen und am Ende den Suchbegriff verlieren. Hier ist ein Teil des Codes von der Seite - http://Pastebin.com/L9zEw1cn

Die erste Schleife ist die Standardschleife, in der alle Ergebnisse angezeigt werden, und die zweite Schleife ist die Schleife, die ich für die restlichen Beitragstypen verwenden möchte.

Gibt es also eine Möglichkeit, die zweite Schleife so zu korrigieren, dass nur die Suchergebnisse für diesen Beitragstyp angezeigt werden?

Jede Hilfe wäre sehr dankbar. Vielen Dank.

Antworten

2
mygm

Sie können filter posts_clauses verwenden. Zum Beispiel:

add_filter( 'posts_clauses', 'post_query_order', 20, 1 );
function post_query_order( $pieces )
{
    global $wpdb;
    $pieces['orderby'] = $wpdb->prefix.'posts.post_type ASC';
    return $pieces;
}
1
Vladimir

In Ihrer zweiten Schleife richten Sie Argumente für die Posts-Abfrage ein, aber Sie verwenden sie nirgendwo. Sie sollten query_posts( $args ) vor die zweite Schleife stellen. Sie können auch eine get_posts -Funktion oder WP_Query -Klasse verwenden.

BEARBEITEN: Von der Seite über die Funktion query_posts im WordPress-Codex :

query_posts () ist die einfachste, aber nicht bevorzugte oder effizienteste Möglichkeit, die Standardabfrage zu ändern, die WordPress zum Anzeigen von Posts verwendet. Verwenden Sie query_posts (), um andere Beiträge anzuzeigen als die, die normalerweise unter einer bestimmten URL angezeigt werden.

Im Moment durchlaufen Sie in Ihrem Code zweimal dieselben Posts. Die zweite Schleife ist genau die gleiche wie die erste.

Wenn Sie nun query_posts() mit verschiedenen Argumenten vor die zweite Schleife stellen, wie folgt:

$ args = array ('post_type' => 'videos', 's' => $ s); 
 query_posts ($ args); 
 if (have_posts ()): 
 while (have_posts ()): 
 the_post (); 
 
 // Zeige den Beitrag 
 
 endwhile an; endif; 
 wp_reset_postdata (); ?>

Sie durchlaufen verschiedene Posts.

0