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

Ссылка скопирована
1 ответ

Здравствуйте, создал шаблон страницы 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 устанавливаем нужное количество и добавляем после цикла вывод пагинации

  • Причин может быть миллион, решение конечно странное для архива записей - шаблон отдельный, но каждый развлекается как развлекается. Код покажите этого шаблона, по описанию причин можно накидать 1500
  • Ответы:

    рекомендуется использовать класс 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();

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Mobile-редакция Ответ

    Шаблон страницы 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();

    <?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: так станет понятно, проблема в запросе или в разметке вывода.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно