Ottenere i Post in una Categoria di Custom Post Type
Ho difficoltà ad ottenere i post in una categoria di custom post type. Ho il codice qui sotto ma non funziona correttamente. Continua a recuperare post da altre categorie.
<?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() restituirà post_type, ho aggiunto _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(); ?>
Potete aiutarmi?
Grazie

Per quanto ne so, non esiste un parametro chiamato post_type_cat
, dovresti usare cat
oppure, se stai interrogando post in una tassonomia personalizzata, dovresti usare una query di tassonomia.
Esempio di query per categoria:
$query = new WP_Query( 'cat=2,6,17,38' );
oppure
$query = new WP_Query( 'category_name=staff' );
Consulta la seguente voce del Codex per altri modi di interrogare per categoria:
http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
Esempio di query per tassonomia:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'people',
'field' => 'slug', //può essere impostato su ID
'terms' => 'bob' //se il campo è ID puoi fare riferimento al numero di cat/term
)
)
);
$query = new WP_Query( $args );
Consulta questa voce per maggiori dettagli:
http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

@djack109 Funziona. Ti consiglio di consultare https://developer.wordpress.org/reference/classes/wp_query. Se continui ad avere problemi dopo questo, considera di creare una domanda così che le persone possano aiutarti.

@KarueBensonKarue people
è la tassonomia. In WordPress hai category
che è la tassonomia predefinita per i post e hai tassonomie personalizzate che ti permettono di creare qualsiasi altro tipo di tassonomia, come people
in questo caso. È meglio pensare a tutte le "categorie" in WP come appartenenti a qualche forma di tassonomia. Può essere un po' confuso per i nuovi arrivati. Quindi, in sintesi, in WP la tassonomia category
si applica a post_type=post
per impostazione predefinita, ma può anche essere associata ad altri tipi di post proprio come le tassonomie personalizzate oppure puoi creare una tassonomia personalizzata per qualsiasi altro scopo.

Non riuscivo in alcun modo a far funzionare nessuna delle soluzioni sopra indicate. O restituivano tutto o niente. Così, dopo un po' di tentativi ed errori, ho fatto così:-
id
è lo slug della categoria che voglio.
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);
Sono nuovo di WordPress, avendo programmato in quasi ogni altro linguaggio, e non ho idea se questo sia un modo buono o cattivo di fare le cose, so solo che funziona per le mie esigenze :)

So che è vecchio, ma non sono riuscito a trovare una risposta chiara. Ecco cosa ha funzionato per me:
Versione WP_Query:
$args = array(
"post_type" => "story",
"story-category" => $category->slug
);
$query = new WP_Query( $args );
Versione get_posts:
$stories = get_posts([
"post_type" => "story",
"story-category" => $category->slug
]);
È così semplice. Basta passare il custom post type, e poi lo slug della categoria in un parametro con lo stesso nome dello slug della categoria del custom post type. Spero abbia senso :)
