Filtrarea taxonomiilor personalizate
Aceasta este o postare încrucișată de pe forumurile WordPress, pentru care îmi cer scuze, dar au trecut aproape o săptămână și nu am primit niciun răspuns acolo, așa că sper că cineva de aici mă poate ajuta. Dacă primesc un răspuns în oricare dintre locuri, voi actualiza postarea cu un link către acesta.
Încerc să extind funcționalitatea temei personalizate a clientului meu și am probleme în încercarea de a face query_posts() să extragă o listă de taxonomii personalizate filtrate după categorie. Crearea tipului de postare personalizată în functions.php este următoarea:
//Tipuri de Postări Personalizate
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);
}
//Taxonomii
register_taxonomy("categories", array("myportfoliotype"), array("hierarchical" => true, "label" => "Categorie", "singular_label" => "Categorie", "rewrite" => true));
register_taxonomy( 'tags', array("homepage"), array( 'hierarchical' => false, 'label' => 'Etichete', 'query_var' => true, 'rewrite' => true ) );
register_taxonomy( 'specifics', array("myportfoliotype"), array( 'hierarchical' => false, 'label' => 'Specificații', 'query_var' => true, 'rewrite' => true ) );
În prezent, site-ul are o pagină care extrage toate postările, apoi filtrează ce este vizibil prin jquery. Interogarea care extrage postările este aceasta:
query_posts( array( 'post_type' => 'myportfoliotype', 'paged' => $paged, 'posts_per_page' => 80))
Acest lucru funcționează, dar după cum am spus, extrage totul. Ceea ce vor acum este 2 șabloane personalizate care să extragă doar câte 2 categorii specifice fiecare. Nu pot face filtrarea prin jquery deoarece nu funcționează vizual în acest caz. Încerc să extrag doar cele 2 categorii, dar din anumite motive nicio variație a următorului cod nu pare să funcționeze:
query_posts( array( 'post_type' => 'myportfoliotype', 'paged' => $paged, 'posts_per_page' => 80, 'tag_id' => '9' ))
Tot ce am încercat fie extrage în continuare toate postările, fie nu extrage niciunul.
PS: Știe cineva o funcție pentru a afișa interogarea brută pe care o generează query_posts? Dacă aș putea vedea ce face de fapt interogarea cu fiecare variație pe care am încercat-o și aș compara asta cu informațiile din wp_postmeta, ar putea ajuta la identificarea problemei.

Aceasta nu este o sarcină dificilă, dar va trebui să citiți atent Codex-ul. În special partea despre tax_query din WP_Query.
Apelul tău propus cu query_posts este greșit. Ar trebui să arate astfel:
query_posts( array(
'post_type' => 'myportfoliotype',
'paged' => $paged,
'posts_per_page' => 80,
'tax_query' => array(
array(
'taxonomy' => 'category', //sau tag sau taxonomie personalizată
'field' => 'id',
'terms' => array('9')
)
)
) );
Mai mult, pentru a crește eficiența interogărilor în baza de date, ar trebui să luați în considerare utilizarea hook-ului pre_get_posts în loc de query_posts.

Mulțumesc, a funcționat după ce am corectat greșelile de scriere. Nu mi-am dat seama că query_posts acceptă aceiași parametri ca WP_Query, iar parametrul tax_query nu este menționat în documentația query_posts(). De asemenea, îmi pare rău, mai am nevoie de 9 puncte de reputație înainte să te pot vota, dar aș fi făcut-o dacă aș fi putut. :)
