it-swarm.com.de

Filtern benutzerdefinierter Taxonomien

Dies ist ein Cross-Post aus den WordPress-Foren, für den ich mich entschuldige, aber es ist fast eine Woche her und ich habe dort keine Antwort erhalten, in der Hoffnung, dass hier jemand helfen kann. Wenn ich an einer der beiden Stellen eine Antwort bekomme, aktualisiere ich den Beitrag mit einem Link dazu.

Ich versuche, die Funktionalität auf das benutzerdefinierte Thema meines Clients zu erweitern, und es treten Probleme auf, wenn query_posts () versucht, eine nach Kategorie gefilterte Liste benutzerdefinierter Taxonomien abzurufen. Die Erstellung des benutzerdefinierten Beitragstyps in functions.php sieht folgendermaßen aus:

//Custom Post Types
add_action('init', 'create_myportfoliotype');
function create_myportfoliotype() {
    $myportfoliotype_args = array(
        'label' => __('Portfolio'),
        'singular_label' => __('Portfolio'),
        'public' => true,
        'show_ui' => true,
        'menu_position' => 5,
        'capability_type' => 'post',
        'hierarchical' => false,
        'publicly_queryable' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'portfolio', 'with_front' => false ),
        'can_export' => true,
        'supports' => array(
            'title', 
            'editor', 
            'post-thumbnails',
            'custom-fields',
            'page-attributes',
            'author',
            'thumbnail'
          )
       );
  register_post_type('myportfoliotype',$myportfoliotype_args);
}


//Taxonomias
register_taxonomy("categories", array("myportfoliotype"), array("hierarchical" => true, "label" => "Category", "singular_label" => "Category", "rewrite" => true));
register_taxonomy( 'tags', array("homepage"), array( 'hierarchical' => false, 'label' => 'Tags', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'specifics', array("myportfoliotype"), array( 'hierarchical' => false, 'label' => 'Specifics', 'query_var' => true, 'rewrite' => true ) );

Derzeit verfügt die Site über eine Seite, auf der alle Beiträge abgerufen und anschließend herausgefiltert werden, was über jquery angezeigt wird. Die Abfrage, die die Beiträge abruft, lautet wie folgt:

query_posts( array( 'post_type' => 'myportfoliotype', 'paged' => $paged, 'posts_per_page' => 80))

Das funktioniert, aber wie gesagt zieht alles ein. Was sie jetzt wollen, sind 2 benutzerdefinierte Vorlagen, die jeweils nur 2 spezifische Kategorien enthalten. Ich kann die Filterung nicht über jquery durchführen, da dies in diesem Fall nicht visuell funktioniert. Ich versuche, nur die 2 Kategorien einzubeziehen, aber aus irgendeinem Grund scheint keine Variation des folgenden Codes zu funktionieren:

query_posts( array( 'post_type' => 'myportfoliotype', 'paged' => $paged, 'posts_per_page' => 80, 'tag_id' => '9' ))

Alles, was ich versucht habe, zieht entweder noch alle Beiträge oder keinen von ihnen ein.

ps. Kennt jemand eine Funktion, um die rohe Abfrage zu sichern, die query_posts generiert? Wenn ich sehen könnte, was die eigentliche Abfrage bei jeder Variation, die ich ausprobiert und verglichen habe, mit den Informationen in wp_postmeta, könnte dies hilfreich sein, um herauszufinden, wo das Problem liegt.

6

Dies ist keine gelernte Aufgabe, aber Sie müssen sorgfältig den Codex lesen. Insbesondere tax_query-Teil von WP_Query .

Ihr vorgeschlagener Aufruf von query_posts ist falsch. Das sollte so aussehen:

query_posts( array(  
    'post_type' => 'myportfoliotype', 
    'paged' => $paged, 
    'posts_per_page' => 80, 
    'tax_query' => array( 
        array( 
            'taxonomy' => 'category', //or tag or custom taxonomy
            'field' => 'id', 
            'terms' => array('9') 
        ) 
    ) 
) );

Um die Verwendung von DB-Abfragen effizienter zu gestalten, sollten Sie pre_get_posts hook anstelle von query_posts verwenden

12
david.binda