简体   繁体   中英

WP Query taxonomy posts

I am building a wordpress theme from scratch. I have this taxonomy:

add_action( 'init', 'create_cat_slider' );

function create_cat_slider() {
    register_taxonomy(
        'sliderType','post',
        array(
            'label' => __( 'Slider' ),
            'hierarchical' => true,
        )
    );
}

I have two posts attached to this taxonomy 在此处输入图片说明

在此处输入图片说明

Now I have this following loop. It should create two buttons for the slider (the number of posts related to the taxonomy should be equal to the number of buttons created). As stated above, I have to posts related to the taxonomy. The issue is that after the WHILE is executed I will end up with 7 buttons. Been trying to fing a solution for this for the past several hours. Even with the codex in front, being my first theme, I find this quite hard.

                    $args = array(
                        'tax_query' => array(
                            'taxonomy' => 'sliderType'
                        )
                    );
                    $custom_query = new WP_Query( $args );

                    if($custom_query->have_posts()) :
                        //echo $custom_query->found_posts;
                        $i = 0;
                        while ( $custom_query->have_posts() ) : $custom_query->the_post();
                            if($i == 0)
                                $active = 'class="active"';
                            else
                                $active = '';

                            echo '<a href="#" data-target="#bigSlider" data-slide-to="' . $i . '" ' . $active . '></a>';
                            $i++;    
                        endwhile;
                    endif;
                    wp_reset_postdata();

LE: The current version of the code: Taxonomy

add_action( 'init', 'create_cat_slider' );

    function create_cat_slider() {
        register_taxonomy(
            'slider_ype','post',
            array(
                'label' => __( 'Slider' ),
                'hierarchical' => true,
                'rewrite' => array( 'slug' => 'slidertype' )
            )
        );
    }

Query

                $args = array(
                    'tax_query' => array
                    (
                        array(
                            'taxonomy' => 'slidertype',
                            'field' => 'slug',
                            'terms' => 'slidertype'
                        )
                    )
                );
                $custom_query = new WP_Query( $args );

There is no easy way to query all the posts attached to a specific taxonomy.

The only way to do this is to get all the terms attached to the taxonomy and then pass all the term ID's to a tax_query in your custom query

You can try the following: ( Requires PHP 5.4+ and this is only the important parts. Also note, you have mispelled sliderType ;-) )

$term_ids = get_terms( 'sliderType', ['fields' => 'ids'] );
$args = [
    'tax_query' => [
        [
            'taxonomy' => 'sliderType',
            'terms' => $term_ids
        ]
    ]
];
$custom_query = new WP_Query( $args );

If you, however, just need to query posts from a specific term in a taxonomy, you can simply just pass the term ID or slug with the relevant field value to the query

$args = [
    'tax_query' => [
        [
            'taxonomy' => 'sliderType',
            'field' => 'slug',
            'terms' => 'relevant-term-slug'
        ]
    ]
];
$custom_query = new WP_Query( $args );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM