Сортировать сообщения по категориям?

#php #sorting #loops #categories

#php #сортировка #циклы #Категории

Вопрос:

Гуглил это часами, не могу найти решение.

В моей теме у вас есть Browse страница, которая извлекает все видео из пользовательского типа сообщения, с которым я работаю. Если пользователь создает 30 категорий, тогда я хотел бы, чтобы пользователи могли сортировать видео с помощью кнопок категорий, перечисленных вверху. Если они нажимают на Horror идентификатор, как цикл, чтобы показать все Horror видео.

Как я могу отсортировать свои видео, используя категории в этом цикле?

СТРАНИЦА ПРОСМОТРА

Моя категория ul li a

 <ul class="sort-by-category">
    <?
      $args = array(
            'orderby' => 'name',
            'parent' => 0
      );
      $categories = get_categories( $args );
      foreach ( $categories as $category ) {
        echo '<li><a class="browse-categories" href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
      }
    ?>
  </ul>
<? 
    // Our variables
    $numPosts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0;
    $page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;

    query_posts(array(
          'posts_per_page' => $numPosts,
          'paged'          => $page,
          'post_type'      => 'theme_video'
    ));

    // our loop
    if (have_posts()) {
          while (have_posts()){
                the_post();
                get_template_part( 'partials/content', 'browse' );
          }
    }
    wp_reset_query();
  ?>
  

Я немного запутался в том, как действовать дальше. Кажется, ничто из того, что я пробовал, не сортирует цикл, а методы, которые я использовал, устарели на 1-2 года…

Сайт хорошо работает для моей первой темы, но я не знаю, как заставить этот цикл сортировать по выбранной вами категории. Какие-либо советы или указания?

Спасибо!

Ответ №1:

РЕДАКТИРОВАТЬ: ответ найден, и я публикую его для всех, у кого есть эта проблема. Если у вас есть лучшие способы достижения этой цели, пожалуйста, опубликуйте ниже в интересах других.

Поместите этот код в свой category.php .Он автоматически захватит категорию из URL-адреса и передаст ее в cat => $category_id и соответствующим образом обновит цикл.

 <ul class="sort-by-category">
<?
  $args = array(
        'orderby' => 'name',
        'parent' => 0
  );
  $categories = get_categories( $args );
  foreach ( $categories as $category ) {
    echo '<li><a class="browse-categories" href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
  }
?>
</ul>

<?
    // Our variables
    $page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;

    // grab slug from url
    $category_id = get_query_var('cat');

    // define args
            $args = array( 
                        'posts_per_page' => '36',
          'paged'          =>  $page,
          'post_type'      => 'theme_video',
          'cat'            =>  $category_id
     );

            // place args in query
            $category_posts = new WP_Query($args);

            // our loop
            if($category_posts->have_posts()) { 
            while($category_posts->have_posts()) { 
                    $category_posts->the_post();
                    get_template_part( 'partials/content', 'browse' );
            }
    } 
    wp_reset_query();
?>