it-swarm.com.de

Benutzerdefinierte Schleife mit mehreren Taxonomieabfragen

Entschuldigung - neu im StackExchange und tatsächlich in Stack Overflow gepostet, da ich nicht wusste, dass es eine WP spezifische Verbindung gibt.

Mein Problem--

Was ich habe: Ich habe den Code für eine Arbeitsereignisliste. Es gibt einen einzelnen benutzerdefinierten Post (Ereignisse) und drei Taxonomien (Standort, Monat, Typ). Der folgende Code listet zukünftige Ereignisse auf und ordnet sie nach einem benutzerdefinierten Feld (start_date). Die Ereignisliste kann auch nach Taxonomie sortiert werden. Sie können beispielsweise nur Ereignisse im Dezember (Monat) oder Ereignisse nach Ort (Montana) anzeigen.

Was ich nicht herausfinden kann: Sortieren von Listen nach zwei verschiedenen Taxonomien. Zum Beispiel: Ereignisse im Dezember (Monat), die sich auch in Montana (Ort) befinden. Es scheint nur das eine oder andere auszuwählen.

Weitere Informationen: Bei Verwendung der Standard-Wordpress-Schleife, nicht der benutzerdefinierten unten, gibt es kein Problem mit mehreren Abfragen mit dieser CPT und Taxonomien, aber natürlich Es werden alle Ereignisse angezeigt, die jemals stattgefunden haben, einschließlich der Ereignisse in der Vergangenheit.

Dies ist auch meine erste wp_query, also hoffe ich, dass es etwas Offensichtliches ist.

Datei: (archives-events.php)

<?php 
$today = date('Ymd');       
$my_query = new WP_Query( array(
    'post_type' => 'events',
        'tax_query' => array(
        'relation' => 'OR',
          array(
            'taxonomy' => 'location',
            'terms' => $term,
          ),
             array(
            'taxonomy' => 'month',
            'terms' => $term,
          ),
          array(
            'taxonomy' => 'type',
            'terms' => $term,
          )), 
    'posts_per_page' => 10,
    'meta_compare' => '>',
        'meta_value' => $today,
    'orderby' => 'meta_value', 
    'meta_key' => 'start_date',
    'order' => 'ASC',
    'paged'=> $paged, 
)); ?>

<?php if ( $my_query->have_posts() ) : while ($my_query->have_posts() ) : $my_query->the_post();?>

<!-- OUTPUT OF QUERY -->

<?php endwhile; 
wp_reset_postdata();
endif; ?>
1
Chip Strong

Hier ist eine Funktion, um eine Abfrage mit mehreren Taxonomien durchzuführen:

function posts_search ($post_type,$taxonomies) { // $taxonomies should be an array ('taxonomy'=>'term', 'taxonomy2'=>'term2')
    foreach ($taxonomies as $key=>$value) {
        $args=array('post_type'=>$post_type,'post__in'=>$ids,$key=>$value);
        unset($ids); $ids=array();
        foreach($posts=get_posts($args) as $post) { $ids[]=$post->ID; }
        if (empty($ids)) return false;
    }
    return $posts;
}

Und hier ist ein Beispiel, wie ich es in einem früheren Projekt verwendet habe:

$posts = posts_search ('produtos',array('prod-categoria'=>'blocos','prod-cols'=>'7-c')); 
if($posts) { 
    foreach($posts as $post) { 
        // show infos from the post... 
    } 
}

Die produtos ist der benutzerdefinierte Beitragstyp, für den ich die Suche durchführe, prod-categoria und prod-cols sind zwei benutzerdefinierte Taxonomien und blocos und 7-c sind zwei Begriffe aus den vorherigen benutzerdefinierten Taxonomien.

Hoffentlich hilft das.

OBS1; die funktion ist nicht von mir, sondern wahrscheinlich von einem alten post hier. OBS2; Dies war bei einer 3.1.2-Installation funktionsfähig.

1
kevin