@Evgeniy-Web

Как в wordpress в записях сделать вывод постов из категорий этой записи?

Всем привет! Хочу, чтобы на сайте в каждой записи под контентом выводились похожие посты из рубрик этой записи, нашел такой код, но он выводит посты только из определенной рубрики, а мне надо, чтобы для каждой записи, в зависимости от ее рубрики, выводились посты с такиме же рубриками, вот собственно сам код:
<div class="article-content">
      <div class="container hotlist">
        <h3 class="section-title">Похожие записи</h3>
        <div class="we-recommend">
          <div class="wrapper">
            <div class="wrapper">
        <?php $id=2; // ID заданной рубрики
$n=3;   // количество выводимых записей
$recent = new WP_Query("cat=$id&showposts=$n"); 
while($recent->have_posts()) : $recent->the_post(); ?>

        <a onclick="return !window.open(this.href)" href="<?php the_permalink() ?>"></a><a href="<?php the_permalink() ?>">  </a>
              <div id="post-<?php the_ID(); ?>" <?php post_class('block__item'); ?>>       

    <a href="<?php the_permalink(); ?>">
               <?php the_post_thumbnail(array(6800, 440)); ?>
                </a>
           
                 <div class="block__item-tag block__item-tag-id-1">
                  <?php the_category( ' ' ); ?> 
                </div>
                <h3 class="block__item-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
              </div>
  <?php endwhile; ?>
            </div>
          </div>
        </div>
      </div>
  • Вопрос задан
  • 238 просмотров
Решения вопроса 1
baskserg
@baskserg
Better skills, better life.
Определяете id текущей записи
По ней определяете id категории, к которой принадлежит запись
И вместо цифры вставляете переменную
<?php 
$id = $category_id; // <=======  В это место 
$n=3;   // количество выводимых записей
$recent = new WP_Query("cat=$id&showposts=$n"); 
while($recent->have_posts()) : $recent->the_post();
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alone_lion1987
@alone_lion1987
Веб-разработчик
Вывод плиткой. Примерно так:

1 2
3 4

Взял код со своего одного старого проекта. Вроде рабочий.

В шаблоне single.php, после контента поста:

<?php
// получаем рубрики текущего поста
$categories = get_the_category($post->ID);

if ($categories) {
    $category_ids = array();
    foreach ($categories as $individual_category) {
        // пихаем айдишники рубрик поста в массив
        $category_ids[] = $individual_category->term_id;
    }
    $args = array(
        'category__in' => $category_ids,   // выводим из этих рубрик только
        'post__not_in' => array($post->ID),   //  исключаем текущий пост
        'showposts' => 4, // кол-во постов
        'caller_get_posts' => 1,
        'orderby' => 'rand' // в случайном порядке
    );

    $my_query = new wp_query($args);
    if ($my_query->have_posts()) {
        echo '<div class="more">';
        $cssMap = array(0 => "first", 1 => "last");
        $counter = 0;
        while ($my_query->have_posts()) {
            $my_query->the_post(); ?>
            <?php $class = $cssMap[$counter++ % 2]; ?>
            <div class="more-post left <?php print $class; ?>">
                <?php the_excerpt(''); // анонс поста ?>
            </div>
            <?php if ($class == $cssMap[1]) { ?>
                <div class="clearfix"></div>
            <?php
            }
        }
        echo '</div>';
    }
    wp_reset_query();
}


ну понятно, clearfix класс после 2 блоков очищает обтекание, дабы верстка не поплыла, а класс left задает обтекание. Ну блокам еще ширину можно задать 50%. Вроде все
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы