it-swarm.com.de

Erstellen einer mehrtaxonomischen Abfrage mit mehreren Begriffen basierend auf Benutzereingaben

Dank des hervorragenden Beitrags von Otto zu erweiterten Taxonomie-Abfragen habe ich ( meistens) verstehen, wie man Abfragen mit mehreren Taxonomien und Begriffen erstellt. Was ich jedoch nicht weiß, ist, wie man diese dynamisch basierend auf Benutzereingaben erstellt. Am Ende möchte ich wirklich etwas haben, das Amazon.com auf seiner Website hat, mit Kontrollkästchen neben den verschiedenen Begriffen für eine Taxonomie in der Seitenleiste (und mehreren Listen mit Begriffen, die jeweils eine Taxonomie-Überschrift enthalten). Etwas wie das:

Taxonomy with list of terms and check boxes to select those terms

Wie soll ich so etwas bauen? Die dynamische Anzeige des Inhalts (der Inhalt ändert sich, wenn ein Kontrollkästchen aktiviert ist) wäre großartig, aber ich würde mich mit einem "Senden" -Button zufrieden geben.

3

Ich bin ein wenig verwirrt, was die technischen Details betrifft, aber ich denke, der allgemeine Überblick würde wie folgt aussehen:

  1. Schnittstelle - Sie müssen diese entweder als Formular per Button oder JavaScript einreichen.

  2. Abfragevariablen - Sie müssen benutzerdefinierte Variablen über den query_vars-Filter registrieren, damit Ihre benutzerdefinierten Daten nicht aus der URL gelöscht werden.

  3. Abfrage - Ändern Sie die Abfrage, um eine komplexe Abfrage unter Verwendung der übermittelten benutzerdefinierten Daten durchzuführen.
2
Rarst

senden Sie das Formular mit Javascript, wenn sich der Status einer Box ändert. Anschließend können Sie mit wp_query eine neue Abfrage erstellen und mit tax_query die aktivierten Taxonomien anzeigen:

$args = array(
    ... // posttype and such
    'tax_query' => array(),
    ...// other arguments 
);
//if post is set
if(isset($_POST['cats'])){
    //pusch to array
    $args['tax_query'][] = array(
        'taxonomy' => 'the taxonomy',
        'field' => 'id', // get tax by id or slug
        'terms' => $_POST['cats'],
        'operator' => 'AND' // or you can choose 'IN'
    );
}
$new_query = new Wp_Query($args);
//start loop
while ($new_query->have_posts() ) : $new_query->the_post(); ?>

ich hoffe es hilft.

1
ferenyl