WP_Query по имени категории

11 сент. 2014 г., 18:55:32
Просмотры: 66.2K
Голосов: 4

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

<?php
/**
 * Избранный контент 2
 *
 */

$args = array(
    'post_type' => 'iv_post_type',
    'category'    => 'commitment',
);
$loop = new WP_Query( $args );      
if ( $loop->have_posts() ) : ?>

    <div id="video-sidebar-right">

        <div class="featured-current-wrapper">

            <div id="featured-content">     

                <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

                        <div class="featured-post">
                            <?php if(has_post_thumbnail()) :?>
                                <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'bcc-video-medium' ); ?></a>
                                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                <?php the_excerpt(); ?> 
                            <?php else :?>

                            <?php endif;?>

                        </div> <!-- .featured-post -->

                        <div class="featured-post-pager">
                            <span id="slider-prev" class="slider-nav">&larr; Следующее фото</span>
                            <span id="slider-next" class="slider-nav">&rarr; Предыдущее фото</span>
                        </div>

                <?php endwhile; ?>


            </div><!-- #featured-content -->
        </div><!-- .featured-current-wrapper -->
    </div><!-- #video-sidebar-right -->

    <div id="video-featured-content">

        <div class="featured-video">
            <div class="videoWrapper">
                <iframe width="640" height="360" src="//www.youtube.com/embed/so_PO0dP3oA" frameborder="0" allowfullscreen></iframe>
            </div>
        </div>

        <?php wp_nav_menu( array( 'theme_location' => 'bcc-video-menu' ) ); ?>

        <p class="video-choose-cat">Выберите категорию выше, чтобы просмотреть различные статьи.</p>

        <div id="slider-nav">

            <div id="slide-thumbs">

                <?php $slidecount = 1;

                while ( $loop->have_posts() ) : $loop->the_post(); ?>

                    <div class="slide-thumbs-single <?php echo ( $slidecount == -1 ) ? 'last' : ''; ?>">
                        <?php if(has_post_thumbnail()) :?>
                            <?php the_post_thumbnail( 'bcc-video-thumb' ); ?>
                        <?php else :?>

                        <?php endif;?>
                    </div>

                    <?php $slidecount++; ?>

                <?php endwhile; ?>

            </div><!-- .slide-thumbs -->
        </div><!-- #slider-nav -->
    </div><!-- #video-featured-content -->


<?php endif; ?>
3
Комментарии

Добро пожаловать на [wordpress.se]. В чем вопрос?

birgire birgire
11 сент. 2014 г. 18:59:28

Привет! Все записи этого типа записей отображаются на странице. Я хочу, чтобы показывались только записи из определенной категории. Это возможно? Не уверен, что не так с моими $args... даже если я заменю category на category_name, тогда вообще ничего не отображается...

user6311172 user6311172
11 сент. 2014 г. 19:04:24

Пожалуйста, обновите свой вопрос с этой информацией.

birgire birgire
11 сент. 2014 г. 19:25:44
Все ответы на вопрос 2
1
13

category является допустимым параметром для get_posts, но не для WP_Query. Вот допустимые параметры категорий для WP_Query

  • cat (int) - используйте ID категории.
  • category_name (string) - используйте слаг категории (НЕ название).
  • category__and (array) - используйте ID категории.
  • category__in (array) - используйте ID категории.
  • category__not_in (array) - используйте ID категории.

Вы можете использовать либо cat, либо category_name

Если вы не уверены в каком-либо параметре, просто сделайте var_dump() вашей переменной new WP_Query. В вашем случае, сделайте следующее

?><pre><?php var_dump($loop); ?></pre><?php

Это выведет что-то вроде этого

object(WP_Query)#197 (49) {
  ["query"]=>
  array(2) {
    ["page"]=>
    string(0) ""
    ["pagename"]=>
    string(7) "profile"
  }
  ["query_vars"]=>
  array(62) {
    ["page"]=>
    int(0)
    ["pagename"]=>
    string(7) "profile"
    ["error"]=>
    string(0) ""
    ["m"]=>
    string(0) ""
    ["p"]=>
    int(0)
    ["post_parent"]=>
    string(0) ""
    ["subpost"]=>
    string(0) ""
    ["subpost_id"]=>
    string(0) ""
    ["attachment"]=>
    string(0) ""
    ["attachment_id"]=>
    int(0)
    ["name"]=>
    string(7) "profile"
    ["static"]=>
    string(0) ""
    ["page_id"]=>
    int(0)
    ["second"]=>
    string(0) ""
    ["minute"]=>
    string(0) ""
    ["hour"]=>
    string(0) ""
    ["day"]=>
    int(0)
    ["monthnum"]=>
    int(0)
    ["year"]=>
    int(0)
    ["w"]=>
    int(0)
    ["category_name"]=>
    string(0) ""
    ["tag"]=>
    string(0) ""
    ["cat"]=>
    string(0) ""
    ["tag_id"]=>
    string(0) ""
    ["author"]=>
    string(0) ""
    ["author_name"]=>
    string(0) ""
    ["feed"]=>
    string(0) ""
    ["tb"]=>
    string(0) ""
    ["paged"]=>
    int(0)
    ["comments_popup"]=>
    string(0) ""
    ["meta_key"]=>
    string(0) ""
    ["meta_value"]=>
    string(0) ""
    ["preview"]=>
    string(0) ""
    ["s"]=>
    string(0) ""
    ["sentence"]=>
    string(0) ""
    ["fields"]=>
    string(0) ""
    ["menu_order"]=>
    string(0) ""
    ["category__in"]=>
    array(0) {
    }
    ["category__not_in"]=>
    array(0) {
    }
    ["category__and"]=>
    array(0) {
    }
    ["post__in"]=>
    array(0) {
    }
    ["post__not_in"]=>
    array(0) {
    }
    ["tag__in"]=>
    array(0) {
    }
    ["tag__not_in"]=>
    array(0) {
    }
    ["tag__and"]=>
    array(0) {
    }
    ["tag_slug__in"]=>
    array(0) {
    }
    ["tag_slug__and"]=>
    array(0) {
    }
    ["post_parent__in"]=>
    array(0) {
    }
    ["post_parent__not_in"]=>
    array(0) {
    }
    ["author__in"]=>
    array(0) {
    }
    ["author__not_in"]=>
    array(0) {
    }
    ["ignore_sticky_posts"]=>
    bool(false)
    ["suppress_filters"]=>
    bool(false)
    ["cache_results"]=>
    bool(true)
    ["update_post_term_cache"]=>
    bool(true)
    ["update_post_meta_cache"]=>
    bool(true)
    ["post_type"]=>
    string(0) ""
    ["posts_per_page"]=>
    int(6)
    ["nopaging"]=>
    bool(false)
    ["comments_per_page"]=>
    string(2) "20"
    ["no_found_rows"]=>
    bool(false)
    ["order"]=>
    string(4) "DESC"
  }
  ["tax_query"]=>
  NULL
  ["meta_query"]=>
  object(WP_Meta_Query)#211 (2) {
    ["queries"]=>
    array(0) {
    }
    ["relation"]=>
    NULL
  }
  ["date_query"]=>
  bool(false)
  ["queried_object"]=>
  object(WP_Post)#236 (24) {
    ["ID"]=>
    int(265)
    ["post_author"]=>
    string(1) "1"
    ["post_date"]=>
    string(19) "2014-04-21 14:48:59"
    ["post_date_gmt"]=>
    string(19) "2014-04-21 12:48:59"
    ["post_content"]=>
    string(0) ""
    ["post_title"]=>
    string(4) "Test"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(4) "open"
    ["ping_status"]=>
    string(4) "open"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(7) "profile"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
    string(19) "2014-09-10 19:54:58"
    ["post_modified_gmt"]=>
    string(19) "2014-09-10 17:54:58"
    ["post_content_filtered"]=>
    string(0) ""
    ["post_parent"]=>
    int(0)
    ["guid"]=>
    string(39) "http://localhost/wordpress/?page_id=265"
    ["menu_order"]=>
    int(0)
    ["post_type"]=>
    string(4) "page"
    ["post_mime_type"]=>
    string(0) ""
    ["comment_count"]=>
    string(1) "0"
    ["filter"]=>
    string(3) "raw"
  }
  ["queried_object_id"]=>
  int(265)
  ["request"]=>
  string(138) "SELECT   wp_posts.* FROM wp_posts  WHERE 1=1  AND (wp_posts.ID = '265') AND wp_posts.post_type = 'page'  ORDER BY wp_posts.post_date DESC "
  ["posts"]=>
  &array(1) {
    [0]=>
    object(WP_Post)#212 (24) {
      ["ID"]=>
      int(265)
      ["post_author"]=>
      string(1) "1"
      ["post_date"]=>
      string(19) "2014-04-21 14:48:59"
      ["post_date_gmt"]=>
      string(19) "2014-04-21 12:48:59"
      ["post_content"]=>
      string(0) ""
      ["post_title"]=>
      string(4) "Test"
      ["post_excerpt"]=>
      string(0) ""
      ["post_status"]=>
      string(7) "publish"
      ["comment_status"]=>
      string(4) "open"
      ["ping_status"]=>
      string(4) "open"
      ["post_password"]=>
      string(0) ""
      ["post_name"]=>
      string(7) "profile"
      ["to_ping"]=>
      string(0) ""
      ["pinged"]=>
      string(0) ""
      ["post_modified"]=>
      string(19) "2014-09-10 19:54:58"
      ["post_modified_gmt"]=>
      string(19) "2014-09-10 17:54:58"
      ["post_content_filtered"]=>
      string(0) ""
      ["post_parent"]=>
      int(0)
      ["guid"]=>
      string(39) "http://localhost/wordpress/?page_id=265"
      ["menu_order"]=>
      int(0)
      ["post_type"]=>
      string(4) "page"
      ["post_mime_type"]=>
      string(0) ""
      ["comment_count"]=>
      string(1) "0"
      ["filter"]=>
      string(3) "raw"
    }
  }
  ["post_count"]=>
  int(1)
  ["current_post"]=>
  int(-1)
  ["in_the_loop"]=>
  bool(false)
  ["post"]=>
  object(WP_Post)#212 (24) {
    ["ID"]=>
    int(265)
    ["post_author"]=>
    string(1) "1"
    ["post_date"]=>
    string(19) "2014-04-21 14:48:59"
    ["post_date_gmt"]=>
    string(19) "2014-04-21 12:48:59"
    ["post_content"]=>
    string(0) ""
    ["post_title"]=>
    string(4) "Test"
    ["post_excerpt"]=>
    string(0) ""
    ["post_status"]=>
    string(7) "publish"
    ["comment_status"]=>
    string(4) "open"
    ["ping_status"]=>
    string(4) "open"
    ["post_password"]=>
    string(0) ""
    ["post_name"]=>
    string(7) "profile"
    ["to_ping"]=>
    string(0) ""
    ["pinged"]=>
    string(0) ""
    ["post_modified"]=>
    string(19) "2014-09-10 19:54:58"
    ["post_modified_gmt"]=>
    string(19) "2014-09-10 17:54:58"
    ["post_content_filtered"]=>
    string(0) ""
    ["post_parent"]=>
    int(0)
    ["guid"]=>
    string(39) "http://localhost/wordpress/?page_id=265"
    ["menu_order"]=>
    int(0)
    ["post_type"]=>
    string(4) "page"
    ["post_mime_type"]=>
    string(0) ""
    ["comment_count"]=>
    string(1) "0"
    ["filter"]=>
    string(3) "raw"
  }
  ["comment_count"]=>
  int(0)
  ["current_comment"]=>
  int(-1)
  ["found_posts"]=>
  int(1)
  ["max_num_pages"]=>
  int(0)
  ["max_num_comment_pages"]=>
  int(0)
  ["is_single"]=>
  bool(false)
  ["is_preview"]=>
  bool(false)
  ["is_page"]=>
  bool(true)
  ["is_archive"]=>
  bool(false)
  ["is_date"]=>
  bool(false)
  ["is_year"]=>
  bool(false)
  ["is_month"]=>
  bool(false)
  ["is_day"]=>
  bool(false)
  ["is_time"]=>
  bool(false)
  ["is_author"]=>
  bool(false)
  ["is_category"]=>
  bool(false)
  ["is_tag"]=>
  bool(false)
  ["is_tax"]=>
  bool(false)
  ["is_search"]=>
  bool(false)
  ["is_feed"]=>
  bool(false)
  ["is_comment_feed"]=>
  bool(false)
  ["is_trackback"]=>
  bool(false)
  ["is_home"]=>
  bool(false)
  ["is_404"]=>
  bool(false)
  ["is_comments_popup"]=>
  bool(false)
  ["is_paged"]=>
  bool(false)
  ["is_admin"]=>
  bool(false)
  ["is_attachment"]=>
  bool(false)
  ["is_singular"]=>
  bool(true)
  ["is_robots"]=>
  bool(false)
  ["is_posts_page"]=>
  bool(false)
  ["is_post_type_archive"]=>
  bool(false)
  ["query_vars_hash":"WP_Query":private]=>
  string(32) "7d1c96f43296ed3cb0cd8c4716b9b916"
  ["query_vars_changed":"WP_Query":private]=>
  bool(false)
  ["thumbnails_cached"]=>
  bool(false)
  ["stopwords":"WP_Query":private]=>
  NULL
}

РЕДАКТИРОВАНИЕ

Еще одна вещь, которую следует учесть: используете ли вы пользовательские таксономии или встроенные категории. Очень важно знать разницу, поскольку пользовательские таксономии не используют параметры категорий, а используют tax-query. Если вы не уверены, пожалуйста, прочитайте мой ответ на эту тему здесь

Если вы используете пользовательскую таксономию, то вам следует удалить параметр category и заменить его на tax_query

Пример

'tax_query' => array(
        array(
            'taxonomy' => 'НАЗВАНИЕ ВАШЕЙ ТАКСОНОМИИ',
            'field'    => 'slug',
            'terms'    => 'СЛАГ ВАШЕГО ТЕРМИНА',
        ),
    ),
11 сент. 2014 г. 19:16:36
Комментарии

предположим, у вас есть название категории, а не ее ID, как получить ID категории по названию

Karue Benson Karue Karue Benson Karue
2 дек. 2021 г. 05:16:09
0

Попробуйте этот вариант

$anArray = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'ВАША_ПОЛЬЗОВАТЕЛЬСКАЯ_ТАКСОНОМИЯ',
            'terms'    => 'ID_КАТЕГОРИИ',
        ),
    ),
);

Вы можете найти значения в таблице wp_term_taxonomy вашей базы данных.

10 февр. 2022 г. 17:12:46