web-dev-qa-db-fra.com

Obtenir des messages en interrogeant la taxonomie et certains termes de la taxonomie?

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.

DAY

Cat

Barre d'adresse de l'administrateur

address

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.

1
Foolish Coder

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

MODIFIER

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 
        ) 
    )
);
1
Pieter Goosen