Как выводить записи на страницу wordpress

Как выводить записи на страницу wordpress


 'post',
'posts_per_page' => 5,
'orderby' => 'date',
'order' => 'DESC'
]);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title('

', '

'); the_excerpt(); } wp_reset_postdata(); } ?>

Также важно учитывать влияние функций кеширования и пагинации. Для корректной работы пагинации параметр paged должен передаваться вручную: 'paged' => get_query_var('paged'). Без этой настройки страницы навигации будут возвращать одни и те же записи.

Создайте файл в директории вашей темы, например page-posts.php. В начале файла добавьте комментарий шаблона:

<?php
/*
Template Name: Шаблон для записей
*/
?>
<?php
$query = new WP_Query([
'post_type'      => 'post',
'posts_per_page' => 10
]);
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post(); ?>
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<p><?php the_excerpt(); ?></p>
<?php endwhile;
wp_reset_postdata();
else :
echo '<p>Записей не найдено.</p>';
endif;
?>

Перейдите в админ-панель WordPress, создайте новую страницу и выберите шаблон «Шаблон для записей» в выпадающем списке «Атрибуты страницы».

Сохраните изменения. Теперь при переходе на созданную страницу будет отображён список записей, сформированный по заданным параметрам.

Настройка WP_Query для выборки определённых записей

Настройка WP_Query для выборки определённых записей

Класс WP_Query позволяет гибко настраивать запросы к базе данных WordPress. Для выборки определённых записей используется параметр post__in, которому передаётся массив ID нужных постов:

$args = [
'post__in' => [12, 34, 56],
'orderby' => 'post__in'
];
$query = new WP_Query($args);

Если необходимо вывести записи определённого типа, указывается параметр post_type:

$args = [
'post_type' => 'product',
'posts_per_page' => 10
];

Для выборки по таксономии используется tax_query. Пример для получения записей из категории с ID 7:

$args = [
'tax_query' => [
[
'taxonomy' => 'category',
'field'    => 'term_id',
'terms'    => [7]
]
]
];

Фильтрация по произвольному полю (meta field) выполняется через meta_query. Пример выборки постов, у которых значение поля rating больше 4:

$args = [
'meta_query' => [
[
'key'     => 'rating',
'value'   => 4,
'compare' => '>',
'type'    => 'NUMERIC'
]
]
];

Для исключения записей используется post__not_in:

$args = [
'post__not_in' => [10, 20]
];

Выборка записей с учётом даты публикации настраивается параметром date_query:

$args = [
'date_query' => [
[
'after' => '2024-01-01',
'before' => '2024-12-31',
'inclusive' => true
]
]
];

Все параметры можно комбинировать. После настройки создаётся экземпляр WP_Query, а затем запускается цикл:

$query = new WP_Query($args);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
the_title();
}
wp_reset_postdata();
}

Минимальный пример цикла:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div><?php the_excerpt(); ?></div>
<?php endwhile; endif; ?>
<p><?php the_time('d.m.Y'); ?> | Категории: <?php the_category(', '); ?></p>

Чтобы ограничить количество записей, используют query_posts(), WP_Query или pre_get_posts. Пример с WP_Query:

<?php
$args = array(
'posts_per_page' => 5,
'category_name' => 'novosti'
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
?>
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
<?php
endwhile;
wp_reset_postdata();
endif;
?>

Важно всегда вызывать wp_reset_postdata() после кастомного запроса для восстановления глобальной переменной $post.

Для настройки пагинации используйте функции paginate_links() или the_posts_pagination() в сочетании с параметрами запроса 'paged' и get_query_var('paged').

Добавление пагинации для списка записей

Добавление пагинации для списка записей

Для разбивки списка записей на страницы в WordPress используется функция paginate_links() или готовые шаблонные теги the_posts_pagination() и posts_nav_link(). Ниже приведены конкретные методы внедрения пагинации.

  • В файле шаблона (например, archive.php или index.php) убедитесь, что запрос формируется с учётом параметра пагинации:

    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $query = new WP_Query([
    'post_type' => 'post',
    'posts_per_page' => 10,
    'paged' => $paged
    ]);
  • echo paginate_links([
    'total' => $query->max_num_pages,
    'current' => $paged
    ]);
  • Если используется глобальный цикл WordPress (без WP_Query), достаточно вызвать:

    the_posts_pagination([
    'mid_size' => 2,
    'prev_text' => '« Назад',
    'next_text' => 'Вперёд »'
    ]);
  • Для корректной работы пагинации убедитесь, что структура постоянных ссылок не использует параметр plain (Настройки → Постоянные ссылки).
  • Не забудьте сбрасывать глобальный объект $post при использовании WP_Query:

    wp_reset_postdata();

Для стилизации элементов пагинации используйте классы .page-numbers, .current, .next, .prev, которые автоматически добавляются WordPress.

Фильтрация записей по категории на отдельной странице


$args = array(
'cat' => 7,
'posts_per_page' => 10
);
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
the_title('<h3>', '</h3>');
the_excerpt();
}
wp_reset_postdata();
}

Чтобы автоматизировать фильтрацию по категории, добавьте в URL параметр, например: /my-page/?cat=7, и в шаблоне обработайте его:


$cat_id = isset($_GET['cat']) ? intval($_GET['cat']) : 0;
$args = array(
'cat' => $cat_id,
'posts_per_page' => 10
);

Для SEO-дружественных URL создайте отдельные страницы для каждой категории с использованием шаблона category.php или taxonomy.php. Пример для категории «Новости»: создайте файл category-news.php, WordPress автоматически подхватит его при переходе по ссылке вида /category/news.

Фильтрация по нескольким категориям возможна через массив ID в параметре category__in:


$args = array(
'category__in' => array(3, 5),
'posts_per_page' => 5
);

Предположим, что у вас есть произвольное поле с названием price, которое хранит цену товара. Чтобы вывести это значение в шаблоне записи, нужно использовать следующий код:

<?php echo get_post_meta(get_the_ID(), 'price', true); ?>

Здесь get_the_ID() возвращает ID текущей записи, а 'price' – это имя поля. Параметр true указывает, что нужно вернуть одно значение (если поле содержит несколько значений, используйте false для получения массива).

<?php
$price = get_post_meta(get_the_ID(), 'price', true);
if (!empty($price)) {
echo $price;
} else {
echo 'Цена не указана';
}
?>

Если вы хотите вывести все произвольные поля для текущей записи, воспользуйтесь функцией get_post_custom(). Она возвращает ассоциативный массив всех полей. Пример:

<?php
$custom_fields = get_post_custom();
foreach ($custom_fields as $key => $value) {
echo '<strong>' . $key . '</strong>: ' . implode(', ', $value) . '<br>';
}
?>
<?php echo esc_html(get_post_meta(get_the_ID(), 'price', true)); ?>

Использование коротких кодов для вставки записей в контент

Использование коротких кодов для вставки записей в контент

Короткие коды WordPress (shortcodes) позволяют интегрировать динамические элементы, такие как записи, страницы и другие объекты, прямо в контент без необходимости писать сложный HTML или PHP код. Для вставки записей в статью или страницу можно использовать стандартные и пользовательские короткие коды.

[recent_posts]
[recent_posts category="news" number="5"]

Если требуется больше настроек, можно использовать плагины, создающие свои собственные короткие коды. Например, плагин «Post Grid» позволяет вывести записи в виде сетки с возможностью сортировки по дате, категории или популярности. Для этого достаточно установить плагин и использовать короткий код, предоставляемый им:

[post_grid category="blog" posts_per_page="10"]
function custom_author_posts_shortcode($atts) {
$atts = shortcode_atts(array(
'author' => '',
'number' => 5,
), $atts, 'author_posts');
$args = array(
'author_name' => $atts['author'],
'posts_per_page' => $atts['number'],
);
$query = new WP_Query($args);
if($query->have_posts()) {
$output = '';
}
wp_reset_postdata();
return $output;
}
add_shortcode('author_posts', 'custom_author_posts_shortcode');
[author_posts author="john_doe" number="3"]

Загрузка и отображение миниатюр записей

Чтобы загрузить миниатюру для записи, WordPress использует функционал «Изображения записи» (post thumbnails). Миниатюры автоматически привязываются к записям при загрузке изображения через интерфейс редактирования записи.

  • Шаг 1: Включение поддержки миниатюр. Для этого в файле functions.php активируйте функцию add_theme_support('post-thumbnails');.
  • Шаг 2: Настройка размеров миниатюр. Можно изменить размеры по умолчанию, указав параметры в functions.php с помощью функции set_post_thumbnail_size(ширина, высота);.

Загрузка миниатюры происходит через интерфейс редактирования записи в админке. После добавления изображения, WordPress автоматически создает несколько версий изображения разных размеров (миниатюра, среднее, большое и оригинал). Вы можете использовать любой из этих размеров, но стандартная миниатюра обычно имеет размер 150×150 пикселей.

  • the_post_thumbnail('thumbnail'); – стандартный размер миниатюры.
  • the_post_thumbnail('medium'); – средний размер изображения.
  • the_post_thumbnail('large'); – большой размер изображения.

if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
  • Рекомендация: Не забывайте оптимизировать изображения для улучшения времени загрузки страниц. Используйте плагины для сжатия изображений, такие как Smush или Imagify.
  • Рекомендация: Для более плавного отображения миниатюр на мобильных устройствах используйте адаптивные размеры изображений с помощью атрибута srcset.

Вопрос-ответ:

Как вывести записи на страницу сайта WordPress?

Для того чтобы вывести записи на странице WordPress, необходимо настроить шаблон темы или использовать встроенные возможности редактора. Вы можете использовать виджеты, чтобы отобразить последние записи, или настроить страницу с помощью блочных элементов в редакторе Gutenberg. Важно выбрать нужный тип контента (например, «Записи»), затем настроить отображение через соответствующие параметры в настройках темы или с помощью плагинов, если это требуется.

Можно ли настроить вывод записей по определенным категориям на WordPress?

Да, можно настроить вывод записей по категориям на WordPress. Для этого можно использовать фильтры в коде темы или виджет «Последние записи» с возможностью выбора категории. В редакторе Gutenberg также можно использовать блоки с фильтрами для категорий, чтобы отобразить только записи из определенной категории. Это особенно полезно, если сайт содержит различные типы контента и необходимо сортировать их для удобства пользователей.

Какие плагины помогут вывести записи на страницу WordPress?

Для вывода записей на страницу WordPress можно использовать несколько популярных плагинов. Один из них — это «Recent Posts Widget Extended», который позволяет настроить виджет для отображения последних записей с дополнительными параметрами. Также подойдет плагин «WPBakery Page Builder», который предлагает удобные инструменты для размещения и настройки вывода записей с фильтрацией. Если вы хотите больше гибкости, можно использовать «Elementor», который позволяет выводить записи в виде различных макетов и с фильтрами.

Как изменить количество выводимых записей на странице сайта WordPress?

Чтобы изменить количество выводимых записей на странице WordPress, нужно зайти в настройки сайта. В админ-панели перейдите в «Настройки» -> «Чтение» и в разделе «Количество записей на странице» укажите нужное число. Это повлияет на количество записей, отображаемых на главной странице, а также на архивных страницах. Также можно использовать код в теме для изменения вывода записей на отдельных страницах или категориях, если вам нужны более специфичные настройки.

Ссылка на основную публикацию