Исключить категорию в пользовательской таксономии query_post - PullRequest
4 голосов
/ 28 сентября 2011

Мне нужно исключить категорию из отображаемых сообщений. Я зарегистрировал таксономию: портфолио-категория и добавил категорию: аксессуары (кошка 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(); ?>

edit // Я пробовал этот код, но все равно он не работал:

    <?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 ]

1 голос
/ 30 мая 2013
$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);

элементы = пользовательский тип сообщения

категория портфолио = моя пользовательская таксономия

for multiple category exclude use  'terms' => array( '19,20' ),
0 голосов
/ 22 марта 2012

Кажется, проблема заключается во вложенности.Попробуйте изменить

    $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' 
        )
    )
);

Это сработало для меня.: - /

0 голосов
/ 28 сентября 2011

Аргумент 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.

Обновление: Упс ... уже поздно. Чтобы ответить на актуальный вопрос 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' 
    )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...