Поддержка Проблемы и решения Как вывести посты из кастомного типа по категориям?

  • Всем привет.

    Помогите, ребят.
    Хочу вывести посты из кастомного типа записей по категориям. На главной странице выведены все категории проивзольного типа. При нажатии на определенную категорию идет переход на ее страницу (single-products.php).
    Код (single-products.php)

    <?php
      $term = $wp_query->queried_object;
      $gettedrm = $term->slug; // get current slug (E.g. activity_running)
      $posts = get_posts(array(
        "post_type" => "products",
        'tax_query' => array(
          array(
            'taxonomy' => 'rubriki',
            'field' => 'term_id',
            'terms' => $getterm,
            'include_children' => true,
            'operator' => 'IN'
          ),
        ),
        'numberposts' => -1,
        'post_status' => 'publish',
        'order' => 'DESC',
    ));
    
    foreach ($posts as $post){
      setup_postdata($post); ?>
      <div class="block">
         <div class="name"> 
              <div><?php the_title() ?></div> 
         </div>
      </div>
      <?php
    }
    wp_reset_postdata();
    ?>

    На ней ничего не выводится, кроме тайтла с хедером и футером.
    Хочу сделать, чтобы при переходе на категорию выводились посты этой категории.

    Заранее огромное спасибо.

    • Тема изменена 4 года, 7 месяцев назад пользователем hypero.
Просмотр 10 ответов — с 1 по 10 (всего 10)
  • нажатии на определенную категорию идет переход на ее страницу (single-products.php).

    single-***.php — используется для вывода одной отдельной записи.

    Для вывода списка произвольных типов записей по произвольной таксономии(категории) — нужно создать шаблон taxonomy-***.php. (хотя и это не важно для отображения, просто будут использованы другие шаблоны)

    и нужно добавить фильтр

    function filter_rubriki($query) {
      if ( !is_admin() && $query->is_main_query() &&  is_tax('rubriki') ) {
          $query->set('post_type', array( 'products' ) );
      }
    }
    add_action('pre_get_posts','filter_rubriki');

    Я сейчас вывожу в taxonomy-products.php. Всё равно не выводятся записи. Только тайтл выводится последней добавленной записи и всё.

     "post_type" => "products",
        'tax_query' => array(
          array(
            'taxonomy' => 'rubriki',
            'field' => 'term_id',
            'terms' => $getterm,
            'include_children' => true,
            'operator' => 'IN'

    здесь у вас таксономия называется rubriki

    т.е. нужно taxonomy-rubriki.php

    Да да, я просто ошибся когда тут писал. Используется taxonomy-rubriki.php.
    Сделал по другому:

    <div class="container">
        <h2 class="title"><?php the_title(); ?></h2>
        <div class="content">
            <?php $arg_cat = array(
    			'orderby'      => 'name',
    			'order'        => 'ASC',
    			'hide_empty'   => 1,
    			'exclude'      => '',
    			'include'      => '',
    			'taxonomy'     => 'rubriki',
    		);
    		$categories = get_categories( $arg_cat );
    		?>
    	<div class="products" >
    		<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    		<div id="post-<?php the_ID(); ?>" <?php post_class('products__block product-block'); ?>>
    			<div class="product-block__image">
    				<?php the_post_thumbnail() ?>
    			</div>
    			<div class="product-block__title"><?php the_title(); ?></div>
    		</div>
    		<?php endwhile; ?>
        </div>
    </div>

    Всё выводится, только в заголовке выводится название последнего добавленного поста. Как сделать, чтобы заголовок был названием категории?

    что вы делаете?
    для чего get_categories() ?

    Код нашел
    убрал get_categories. Как вывести тайтл, не подскажете?

    • Ответ изменён 4 года, 7 месяцев назад пользователем hypero.
    • Ответ изменён 4 года, 7 месяцев назад пользователем hypero.

    Вместо названия товара вывести название категории товара?

    Да, сейчас на странице taxonomy-… выводится название последнего добавленного поста.

    <h2 class="title"><?php the_title(); ?></h2>

    заменить на
    <h2 class="title"><?php single_term_title(); ?></h2>

    • Ответ изменён 4 года, 7 месяцев назад пользователем qwert555.

    Спасибо большое вам.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Как вывести посты из кастомного типа по категориям?» закрыта для новых ответов.