Obține Articole dintr-o Categorie de Tip Custom Post
Am probleme în obținerea articolelor dintr-o categorie de tip custom post. Am codul de mai jos dar nu funcționează corect. Încă obține articole din alte categorii.
<?php
$query = null;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => get_post_type(),
'post_status' => 'publish',
'paged' => $paged,
'post_type_cat' => 'featured', // get_post_type() va returna post_type, am adăugat _cat -> post_type_cat
//'orderby' => 'rand',
'posts_per_page' => 1,
'meta_query' => array(
array(
'key' => '_expiration_date',
'value' => array(0, current_time('timestamp')),
'compare' => 'BETWEEN'
)),
);
$query = new WP_Query($args);
?>
<?php if ( $query->have_posts() ) : $query->the_post(); ?>
<?php get_template_part( 'template/featured' ); ?>
<?php else : ?>
<?php get_template_part( 'template/nofeatured' ); ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
Mă puteți ajuta?
Mulțumesc

Din câte știu eu, nu există un parametru numit post_type_cat
, dacă doriți să interogați postări, trebuie să folosiți fie cat
, fie, dacă interogați postări într-o taxonomie personalizată, ar trebui să folosiți o interogare de taxonomie.
Exemplu de interogare după categorie:
$query = new WP_Query( 'cat=2,6,17,38' );
sau
$query = new WP_Query( 'category_name=staff' );
Consultați următoarea intrare din Codex pentru mai multe modalități de interogare după categorie:
http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
Exemplu de interogare după taxonomie:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'people',
'field' => 'slug', // poate fi setat la ID
'terms' => 'bob' // dacă câmpul este ID, puteți face referire la numărul categoriei/termenului
)
)
);
$query = new WP_Query( $args );
Consultați această intrare pentru mai multe detalii:
http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

@djack109 Funcționează. Te rog să consulți https://developer.wordpress.org/reference/classes/wp_query. Dacă încă ai probleme după aceasta, atunci consideră să creezi o întrebare pentru ca oamenii să te poată ajuta.

@KarueBensonKarue people
este taxonomia. În WordPress aveți category
care este taxonomia implicită pentru articole și puteți avea taxonomii personalizate care vă permit să creați orice alt tip de taxonomie, cum ar fi people
în acest caz. Cel mai bine este să gândiți toate "categoriile" din WP ca aparținând unei forme de taxonomie. Poate fi puțin confuz pentru începători. Deci, pe scurt, în WP taxonomia category
se aplică implicit la post_type=post
, dar poate fi atașată și la alte tipuri de postări, exact ca taxonomiile personalizate sau puteți crea o taxonomie personalizată pentru orice alt scop.

Nu am reușit să fac nimic din cele de mai sus să funcționeze. Fie returnau totul, fie nimic. Așa că după câteva încercări și erori, am făcut asta:-
id
este slug-ul categoriei pe care o doresc.
if (isset($_GET["id"])) {
$id = $_GET["id"];
echo $id;
$id = get_category_by_slug( $_GET["id"] );
if (isset($id)) {
$id = $id->term_id;
$args = array(
'post_status' => 'publish',
'post_type' => 'Products',
'cat' => $id,
);
}
}
$query = new WP_Query($args);
Sunt nou în WordPress, după ce am programat în aproape orice alt limbaj, și nu am idee dacă acesta este un mod bun sau prost de a face lucrurile, știu doar că funcționează pentru nevoile mele :)

Știu că acest lucru este vechi, dar nu am reușit să găsesc un răspuns clar. Deci, iată ce a funcționat pentru mine:
Versiunea WP_Query:
$args = array(
"post_type" => "story",
"story-category" => $category->slug
);
$query = new WP_Query( $args );
Versiunea get_posts:
$stories = get_posts([
"post_type" => "story",
"story-category" => $category->slug
]);
Este atât de simplu. Trebuie doar să treci tipul de postare personalizată, iar apoi slug-ul categoriei într-un parametru cu același nume ca și slug-ul categoriei de postare personalizată. Sper că acest lucru are sens :)
