thomas
  • 0
Новичок

Как исключить пользовательскую таксономию из цикла сообщений

  • 0

Есть ли простой или легкий способ исключить все сообщения из пользовательской таксономии в цикле? Я искал вверх и вниз, и ни SE, ни SO, ни Google, кажется, не имеют прямого ответа.

Я знаю, что это можно сделать с помощью запроса WPDB, но это похоже на огромную веревку для чего-то, что должно быть довольно простым.

Share
  1. Любые сообщения, содержащие какие-либо термины в этой таксономии, или вы имеете в виду определенный термин вашей пользовательской таксономии? Пример: если моя таксономия — фрукты, и у меня есть два термина, яблоко и апельсин, хочу ли я исключить все сообщения, в которых есть фрукты, или только те, в которых есть яблоки?

    • 0
  2. Вы хотели бы использовать NOT EXISTS оператор вместе с передачей слага таксономии, который сообщает запросу не включать в цикл какую-либо выбранную категорию из вашей пользовательской таксономии.

    Чтобы исключить все сообщения, относящиеся к таксономии «фрукты» (независимо от вида фруктов), вот фрагмент:

    $args = array(
        'post_type'      => 'post',
        'tax_query'      => array(
            array(
                'taxonomy' => 'fruit',
                'operator' => 'NOT EXISTS'
            )
        )
    );
    
    $query = new WP_Query( $args );
    
    • 0
  3. Решение этого на самом деле не так широко освещается, но оно должно быть.

    Вы можете сделать следующее:

    $args['tax_query'] = array(
        array(
            'taxonomy' => 'category',
            'terms' => array('cat', 'dog'),
            'field' => 'slug',
            'operator' => 'NOT IN',
        ),
    );
    query_posts($args);
    

    Аргумент оператора может принимать другие термины, но приведенный выше код в основном говорит о получении всех сообщений из таксономии «категория», в которых нет терминов «кошка» или «собака».

    • 0
  4. Вот как это сделать для пользовательских типов записей и пользовательских таксономий:

    $happening = new WP_Query(
    array( 
      'post_type'  => 'news',        // only query News post type
      'tax_query' => array(
        array(
            'taxonomy'  => 'news-cat',
            'field'     => 'slug',
            'terms'     => 'media', // exclude items media items in the news-cat custom taxonomy
            'operator'  => 'NOT IN')
    
            ),
       )
    );
    

    Это отлично сработало, чтобы исключить пользовательскую таксономию из пользовательского типа сообщения. Просто хотел добавить код цикла запроса, чтобы закончить фрагмент:

    • 0
  5. Я сделал следующее, чтобы исключить сообщения из определенного термина таксономии:

    $argos = array( 
        'tax_query' =>  array (
            array(
                'taxonomy' => 'topics', // My Custom Taxonomy
                'terms' => 'college', // My Taxonomy Term that I wanted to exclude
                'field' => 'slug', // Whether I am passing term Slug or term ID
                'operator' => 'NOT IN', // Selection operator - use IN to include, NOT IN to exclude
            ),
        ),
        'post_type'=>'page', // Post type I want to show, can be a custom post type too
        'posts_per_page' => -1,
        'orderby' => 'title',
        'order'=>'ASC',
        'post_parent' =>$post->ID // show child posts or pages of current page/post
    ); 
    
    $query = new WP_Query( $args );
    
    • 0
  6. query_posts( array(
        'post_type' => 'listings',
        'tax_query' => array(
            array(
                'taxonomy' => 'status',
                'field'    => 'slug',
                'terms'    => 'sold',
                'operator' => 'NOT IN'
                ),
            )
        )
    );
    

    Этот код исключает статус => продано из списка post_type =>

    • 0
  7. Я использую плагин RYO «Category Visibility» для WordPress, который, кажется, работает очень хорошо.

    Вы можете решить на странице администратора, какие категории будут видны или исключены из различных областей.

    http://ryowebsite.com/wp-plugins/category-visibility/

    -Адам

    • 0

Оставить ответ

You must login to add an answer.