J'ai une taxonomie appelée schedule_day_taxonomy
add_action( 'init', 'schedule_day_tax_func' );
function schedule_day_tax_func() {
register_taxonomy(
'schedule_day_taxonomy',
'schedule',
array(
'hierarchical' => true,
'label' => 'Day',
'query_var' => true,
'orderby' => 'ID', /*
)
);
}
et cette taxonomy
est affectée à un certain type de publication personnalisé uniquement .. appelé schedule
add_action( 'init', 'schedule_func' );
function schedule_func(){
register_post_type('schedule', array(
'label' => 'TV schedule',
'show_ui' => true,
'supports' => array('title', 'thumbnail'),
'public' => true,
'publicly_queryable' => true,
'rewrite' => array( 'slug' => 'show-schedule' ),
'labels' => array (
'name' => 'TV schedule',
'singular_name' => 'TV schedule',
'menu_name' => 'TV Schedules'
),
) );
}
Maintenant, je souhaite recevoir la publication par terms
créée sous la taxonomie schedule_day_taxonomy
attribuée uniquement au type de publication personnalisée schedule
.
J'ai créé deux termes monday
et tuesday
J'essaie d'obtenir tous les messages si c'est sous le terme tuesday
. J'ai donc essayé le code suivant:
<ul id="home-sche-list">
<?php
$args = array( 'post_type' => 'schedule', 'posts_per_page' => 15, 'tax_query' => array(
array(
'taxonomy' => 'schedule_day_taxonomy',
'field' => 'tuesday',
'terms' => 'tuesday'
)
)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$image_id = get_post_thumbnail_id();
$image_url = wp_get_attachment_image_src($image_id,'schedule_home_page_thumb', true);
$terms = get_the_terms( $post->ID, 'schedule_taxonomy' );
?>
<li>
<a href="<?php the_permalink(); ?>" target="_blank" class="wrapper-container">
<div class="sche-thumb-con">
<span>
<img src="<?php echo $image_url[0]; ?>" class="video-thumb hoverZoomLink" alt=""/>
<div class="new-cat">
<?php
foreach($terms as $term) {
echo $term->name;
} ?>
</div>
</span>
</div>
<div class="sche-txt-wrapper">
<div class="schedule-prog"><?php the_title(); ?></div>
<div class="schedule-time evening">
<?php
$terms = get_the_terms( $post->ID, 'schedule_time_taxonomy' );
foreach($terms as $term) {
echo $term->name;
}
?>
</div>
</div>
</a>
</li>
<?php endwhile; ?>
</ul>
Mais je ne reçois aucun message affiché. J'ai un poste qui porte le terme tuesday
.
Barre d'adresse de l'administrateur
Qu'est ce que je fais mal? Cela affectera-t-il si j'assigne ce message à deux autres taxonomies (personnalisation)? J'ai deux autres taxonomies et celles-ci sont affectées à ce poste.
Le paramètre field
dans tax_query
doit être défini sur slug
car il semble que vous transmettiez le terme slug. Toute valeur transmise à field
sauf slug
ou name
entraînera le paramétrage de field
à term_id
par défaut.
Rappelez-vous toujours que la valeur passée à field
doit correspondre à celle qui a été passée à terms
. Par conséquent, si terms
est un terme limace, field
doit être slug
La solution finale de l'OP tirée des commentaires
$args = array(
'post_type' => 'schedule',
'posts_per_page' => 15,
'tax_query' => array(
array(
'taxonomy' => 'schedule_day_taxonomy',
'field' => 'term_id',
'terms' => 1278
)
)
);