Вывод стандартных записей WordPress на кастомной странице?
Здравствуйте, создал шаблон страницы stories.php, обозвал ее Template name: Stories, прописал цикл,
в настройках указал этот шаблон для вывода стандартных, не кастомных записей, и на этом все, записи не выводятся?
Подскажете, пожалуйста, что может быть не так, как реализовать правильно вывод стандартных записей на кастомной странице .
Дополнительно:
на этом все?????
Вы правда считаете, что это адекватное и исчерпывающее описание проблемы, в решении которой вам нужна помощь?
Открыл дверь, сел в машину, завёл, пристегнулся и на этом всё? Подскажите, что может быть не так и как его исправить?
Если бы к вам обратились вот с таким, вы бы смогли чем-то помочь?
создал темплейт
Во первых в ВП нет темплейтов. Есть шаблоны.
Во вторых - зачем эти пляски? Какова цель?
$query = new WP_Query(array( 'post_type' => 'post', 'orderby' => 'date', 'posts_per_page' => '-1' ) ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // Тут шаблон вывода поста } } else { // Постов не найдено } wp_reset_postdata(); |
$query = new WP_Query(array( 'post_type' => 'post', 'orderby' => 'date', 'posts_per_page' => '-1' ) ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); // Тут шаблон вывода поста } } else { // Постов не найдено } wp_reset_postdata();
Выведет все посты, если нужна пагинация, то в post_per_page устанавливаем нужное количество и добавляем после цикла вывод пагинации
Ответы:
рекомендуется использовать класс WP_Query(). напишите аргументы класса $args, которые Вы используете при создании объекта этого класса!
стандартный цикл:
$args = array( 'posts_per_page' => 5, 'orderby' => 'comment_count' ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); echo '<li>'. get_the_title() . '</li>'; } } else { } wp_reset_postdata(); |
$args = array( 'posts_per_page' => 5, 'orderby' => 'comment_count' ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); echo '<li>'. get_the_title() . '</li>'; } } else { } wp_reset_postdata();
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Шаблон страницы
stories.phpсам по себе не начнёт выводить записи, если внутри нет корректного запроса. Страница WordPress по умолчанию выводит свой контент, а не архив записей. Чтобы на кастомной странице вывести стандартные записи, нужен отдельныйWP_Queryили изменение основного запроса.Пример шаблона страницы:
<?php /** * Template Name: Stories */ get_header(); $paged = max(1, get_query_var('paged'), get_query_var('page')); $q = new WP_Query([ 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 12, 'paged' => $paged, ]); if ($q->have_posts()) { while ($q->have_posts()) { $q->the_post(); get_template_part('template-parts/content', 'post'); } echo paginate_links([ 'total' => $q->max_num_pages, 'current' => $paged, ]); } else { echo '<p>Записей пока нет.</p>'; } wp_reset_postdata(); get_footer();
Частая ошибка — забыть
wp_reset_postdata()или использоватьquery_posts(). Это ломает глобальный запрос и пагинацию. Второй момент: если в настройках чтения Вы назначили страницу записей, WordPress будет использовать шаблоны архива, а не произвольный page template.Если нужна именно “страница блога”, лучше использовать стандартную страницу записей и править
home.php/archive.php. Если нужна отдельная витрина с особой логикой, тогда кастомный шаблон сWP_Queryподходит нормально.Также проверьте, что файл шаблона лежит в активной теме, а комментарий
Template Nameнаходится в самом начале PHP-файла. После создания шаблона иногда нужно заново открыть страницу в админке и выбрать шаблон в настройках страницы. Если шаблон выбран, но записей нет, временно выведите$q->found_posts: так станет понятно, проблема в запросе или в разметке вывода.