Виведення постів WordPress за категорією
У цій статті ми розглянемо як вивести блок постів/новини в WordPress на наш приклад.
Для початку подивися готову конструкцію та обговоримо його.
<div class="blog-post">
<?php
$temp = $wp_query; $wp_query= null;
$wp_query = new WP_Query(); $wp_query->query([ 'category_name' => 'news' , 'posts_per_page' => 3 , 'paged' => $paged]);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="col-lg-4">
<div class="post-content">
<a href="<?php the_permalink(); ?>" class="entry-featured-image-url"><?php echo get_the_post_thumbnail( $id, 'thumbnail', array('class' => 'alignleft') ); ?> </a>
<h3 class="post-title">
<a href="<?php the_permalink(); ?>">
<?php trim_title_chars(55, '...'); ?>
</a>
</h3>
<div class="metas">
<div class="read-time"> <i class="far fa-clock"></i> <span><?php the_time('d F Y'); ?></span></div>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
Ми починаємо цикл і перебираємо псти за категорією, яку назвали news
і поставили відображати 3 новини на сторінку. Це значення можна змінювати за потребою. Так само всередині циклу ми поставили col-lg-4
що б виводити по 3 пости в ряд. Не забудьте про <div class="row">
що bootstrap правильно спрацював.
<?php the_permalink(); ?>
— ми додали посилання на пост
Так само зробили посилання на пост за натисканням на картинку.
‘c ategory_name' => 'news'
— ми вказуємо, яку категорію буде перебирати
– posts_per_page' => 3
скільки статті всього виводити
<?php echo get_the_post_thumbnail( $id, 'thumbnail', array('class' => 'alignleft') ); ?>
– ми вказуємо що буде виводити зображення посту, thumbnail
– розмір зображення.
<?php the_time('d F Y'); ?>
– Виводимо коли опублікована стаття.
Заголовок поста помістили в h3
і поставили обмеження для кількості символів, щоб це працювало потрібно додати код в function.php
function trim_title_chars($count, $after) {
$title = get_the_title();
if (mb_strlen($title) > $count) $title = mb_substr($title,0,$count);
else $after = '';
echo $title . $after;
}
Далі йде виведення дати посту та кінець циклу.