如何从自定义查询短代码中排除类别


How to exclude a category from Custom query shortcode?

我正在我的一个模板上使用同位素。我使用自定义查询短代码对其进行动态处理。

代码如下。

function saints_shortcode($atts){
        extract( shortcode_atts( array(
                'category' => ''
        ), $atts, 'saints' ) );
    $q = new WP_Query(
        array('posts_per_page' => '-1', 'post_type' => 'saints_list', 'order' => 'ASC')
        );             
//saint taxanomy query
        $args = array(
                'post_type' => 'saints_list',
                'order' => 'ASC',
                'paged' => $paged,
                'posts_per_page' => $data['saint_items'],
        );
        $saint = new WP_Query($args);
        if(is_array($saint->posts) && !empty($saint->posts)) {
                foreach($saint->posts as $gallery_post) {
                        $post_taxs = wp_get_post_terms($gallery_post->ID, 'saint_category', array("fields" => "all"));
                        if(is_array($post_taxs) && !empty($post_taxs)) {
                                foreach($post_taxs as $post_tax) {
                                        $saint_taxs[$post_tax->slug] = $post_tax->name;
                                }
                        }
                }
        } 
        if(is_array($saint_taxs) && !empty($saint_taxs) && get_post_meta($post->ID, 'pyre_saint_filters', true) != 'no'):
?>
                <div class="remove-ext">
                    <section id="options">
                        <div class="option-combo">
                            <ul id="filter" class="option-set" data-option-key="filter">
                                <li><a href="#show-all" data-option-value="*" class="selected">show all</a></li>
                                <?php foreach($saint_taxs as $saint_tax_slug => $saint_tax_name): ?>
                                <li><a href="#" data-option-value=".<?php echo $saint_tax_slug; ?>"><?php echo $saint_tax_name; ?></a></li>
                                 <?php endforeach; ?>
                            </ul>
                        </div>
                    </section>  
                <?php endif; ?>
<?php
        $list = '              
        <div class="masonary-product">';
        while($q->have_posts()) : $q->the_post();
                $idd = get_the_ID();
                $saint_subtitle = get_post_meta($idd, 'saint_subtitle', true);
                $filterr = get_post_meta($idd, 'filterr', true);
                $small_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'saint-image_small' );
                //Get Taxonomy class
                $item_classes = '';
                $item_cats = get_the_terms($post->ID, 'saint_category');
                if($item_cats):
                foreach($item_cats as $item_cat) {
                        $item_classes .= $item_cat->slug . ' ';
                }
                endif;

                $list .= '
                <div class="col-md-3 '.$item_classes.'">
                    <div class="member">
                        <div class="team">
                            <div class="team-img">
                                <img src="'.$small_image_url[0].'" alt="" />
                            </div>
                            <div class="member-detail">
                                <h3><a href="'.get_permalink().'" title="">'.get_the_title().'</a></h3>
                                <p>'.substr(get_the_excerpt(), 0,100).'</p>
                            </div>
                        </div>
                    </div><!-- MEMBER -->
                </div>
                ';        
        endwhile;
        $list.= '</div></div>';
        wp_reset_query();
        return $list;
}
add_shortcode('saints', 'saints_shortcode');

它工作得很好。

现在我想排除像"执行成员"这样的类别。 我试图排除,但它不起作用。我怎样才能排除我想要的任何类别。

任何人都可以帮助我。

蒂亚

尝试使用此代码。

 $q = new WP_Query(array('posts_per_page' => '-1', 'post_type' => 'saints_list', 'order' => 'ASC','category__not_in' =>'Executive Member'));  
$args = array(
            'post_type' => 'saints_list',
            'order' => 'ASC',
            'paged' => $paged,
            'posts_per_page' => $data['saint_items'],
            'category__not_in' =>'Executive Member',
    );