排除query_posts自定义分类的类别

时间:2011-09-28 01:42:22

标签: wordpress

我需要从展示帖子中排除某个类别。 我注册了分类:portfolio-category 并添加了一个类别:投资组合类别下的配件(cat ID 19)

如何从配件类别中排除帖子? 我试过了:'category' => -19,但它没有用 这是我的代码:

        <?php
                $args=array(
                    'post_type'         => 'items',
                    'post_status'       => 'publish',
                    'showposts'         => intval( get_anolox_option_by('an_homep_count', 3) ),
                    'caller_get_posts'  => 1,
                    'category'          => -19,
                    'paged'             => $paged,
                );
                query_posts($args);

                $end = array(3,6,9,12,15,18,21,24,27,30,33,36,39,42,45);

                $i = 0;
                while (have_posts()): the_post();
                global $post;
                $i++;
            ?>

    MY CODE HERE, NO NEED TO SHOW SINCE IT'S VERY LONG



            <?php endwhile; ?>          
            <?php wp_reset_query(); ?>

编辑//我尝试了这段代码,但它仍无效:

    <?php
                $args=array(
                    'post_type'         => 'items',
                    'post_status'       => 'publish',
                    'showposts'         => intval( get_anolox_option_by('an_homep_count', 3) ),
                    'caller_get_posts'  => 1,

                    'paged'             => $paged,
                    'tax_query'          => array(
                        'taxonomy' => 'portfolio-category',
                        'terms' => 'accessories',
                        'field' => 'slug',
                        'operator' => 'NOT IN')
                );
                query_posts($args);

3 个答案:

答案 0 :(得分:1)

$args = array(
        'post_type'=>'items',
        'order'=>'ASC',
        'posts_per_page'=>3
        'tax_query' => array(
            array(
            'taxonomy' => 'portfolio-category',
            'field' => 'id',
            'terms' => 19,
            'operator' => 'NOT IN',
            ),
        )
));
query_posts($args);

项目=自定义帖子类型

portfolio-category =我的自定义分类

for multiple category exclude use  'terms' => array( '19,20' ),

答案 1 :(得分:0)

category参数适用于内置类别分类。像这样更改您的$args以引用您的自定义分类:

$args=array(
    'post_type'          => 'items',
    'portfolio-category' => 'accessories',
    'post_status'        => 'publish',
    'showposts'          => intval( get_anolox_option_by('an_homep_count', 3)),
    'paged'              => $paged
);

这假设如下:

  1. 您有一个名为items的自定义帖子类型。
  2. 已注册portfolio-category分类。
  3. accessories已添加到portfolio-category分类中。
  4. 更新:哎呀......迟到了。要回答OP关于如何排除accessories投资组合类别的实际问题(而不是像上面那样包含它),您可以使用tax_query参数。代码如下,以排除accessories

    $args=array(
        'post_type'          => 'items'
        'post_status'        => 'publish',
        'showposts'          => intval( get_anolox_option_by('an_homep_count', 3)),
        'paged'              => $paged,
        'tax_query'          => array(
            'taxonomy' => 'portfolio-category',
            'terms' => 19,      
            'field' => 'id',
            'operator' => 'NOT IN' 
        )
    );
    

答案 2 :(得分:0)

问题似乎是一层嵌套。尝试更改

    $args=array(
    'post_type'          => 'items'
    'post_status'        => 'publish',
    'showposts'          => intval( get_anolox_option_by('an_homep_count', 3)),
    'paged'              => $paged,
    'tax_query'          => array(
        'taxonomy' => 'portfolio-category',
        'terms' => 19,      
        'field' => 'id',
        'operator' => 'NOT IN' 
    )
);

致:

    $args=array(
    'post_type'          => 'items'
    'post_status'        => 'publish',
    'showposts'          => intval( get_anolox_option_by('an_homep_count', 3)),
    'paged'              => $paged,
    'tax_query'          => array(
        array(
            'taxonomy' => 'portfolio-category',
            'terms' => 19,      
            'field' => 'id',
            'operator' => 'NOT IN' 
        )
    )
);

这对我有用。 : - /