it-swarm.com.de

Verfeinern Sie die Suchergebnisse mit WP_Query

Ich versuche, Worpress-Suchergebnisse mithilfe von WP_Query zu ändern (zu verfeinern?), So wie es in im Codex erläutert wird. Das in diesem Artikel gezeigte Snippet befindet sich oben in der Datei Search Template PHP, und alle Ergebnisse werden entsprechend angezeigt.

Wenn ich versuche, das Array WP_Query mit Argumenten meiner Wahl anzufügen, um eine geänderte Abfrage zu erstellen (z. B. Posts, die Termbenutzersuchen enthalten, die in einer bestimmten Taxonomie nicht enthalten sind), ignoriert WP_Query die angehängten Argumente vollständig und gibt mir die ursprüngliche Suche Ergebnisse immer wieder.

Code unten:

$search = new WP_Query(array( 'taxonomy' => 'media', 'field' => 'image', 'operator' => 'NOT IN'));

Ich habe es auch so versucht, aber ich habe das Gefühl, es ist völlig falsch:

<?php
global $query_string;
$query_args = explode("&", $query_string);
$search_query = array();
foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach
$args = array(
        'tax_query' => array(
        array(
            'taxonomy' => 'media',
            'field' => 'slug',
            'terms' => 'media',
            'operator' => 'NOT IN'
        )
    ),
    $search_query
);

Was folgt ist das Übliche:

if ( $search->have_posts() ) :
    while ($search->have_posts() ) : $search->the_post(); ?>

Ich bin nicht sehr fließend in Sachen Codierung, versuche mir aber die Macken von Wordpress als CMS beizubringen. Ich habe die Antworten auf dieser Seite durchgelesen, aber keine der Methoden hat es für mich getan.

Kannst du sehen, was ich falsch mache? Vielen Dank!

1
Egor

Sie müssen nur die aktuelle Abfrage für die Suche mit dem Teil zusammenführen, den Sie hinzufügen möchten, dem Sie bereits nahe gekommen sind.

Ich gehe davon aus, dass Sie eine benutzerdefinierte Taxonomie namens "Medien" haben und Beiträge mit dem Begriff "Medien" (wie ein in einem Tag oder einer Kategorie gefundener Begriff) in den Suchergebnissen auslassen möchten

In Ihrem Fall:

$custom_query = array();
$custom_query['tax_query'][] = array( 'taxonomy' => 'media', 'terms' => array('media'), 'field' => 'slug', 'operator' => 'NOT IN' );

$args = array_merge( $wp_query->query, $custom_query );
query_posts( $args );
3
Seagyn Davis