@sherzad_90

Почему Wordpress не показывает список всех постов?

Я создал страницу "Блог" в админ панели.
Там же указал шаблон который я создал с именем 'blog_posts.php" и сохранил страницу.
У меня меню site.ru/blog к блогу стоит
Я открыл файл 'blog_posts.php" и прописал следующий код:

<?php
/*
Template Name: Блог
Template Post Type: post, page
*/

get_header();
?>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
        <div class="page-banner-area">
            <div class="container">
                <div class="page-banner-content text-center">
                    <h2>Блог</h2>
                    <ul class="pages-list">
                        <?php do_action( 'woocommerce_before_main_content' ); ?>
                    </ul>
                </div>
            </div>
            <div class="page-banner-shape-1"><img src="<?=get_template_directory_uri();?>/assets/img/shape-1.png" alt="Shape1" /></div>
            <div class="page-banner-shape-2"><img src="<?=get_template_directory_uri();?>/assets/img/shape-2.png" alt="Shape2" /></div>
        </div>

		<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
				
		<?php
			endwhile;

			the_posts_navigation();

		else :

			get_template_part( 'template-parts/content', 'none' );

		endif;
		?>

<?php
get_footer();

А в админ панель стоит настройки на чтение вот это:

6378d3b5ca989671896688.png
Почему посты не выводятся?
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Вероятнее всего у вас нет записей в глобальном запросе $wp_query, проверить можно распечатав этот запрос

global $wp_query;
var_dump( $wp_query );


Глобальный запрос для страницы записей добавится если вы укажите этот шаблон в опции "Страница записей". Кроме того, изменить глобальный запрос можно на хуке pre_get_posts

add_action( 'pre_get_posts', 'blog_posts' );
function blog_posts( $query ) {

	if ( ! is_admin() && $query->is_main_query() && is_page_template( 'blog.php' ) ) {
		$query->set( 'post_type', 'post' );
		$query->set( 'posts_per_page', '10' );
	}
}


Так же вы можете сделать кастомный запрос wp_query(), но учитывайте, что функция пагинации the_posts_navigation() работает только с глобальным запросом

PS. Код писал без тестов, может не работать
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы