Задать вопрос
maks843
@maks843
Web-дизйнер

Не могу понять, почему не работает цикл wordpress?

Я только начинаю учиться верстать под wp. Подскажите пожалуйста, почему не работает цикл выведения постов и кнопка "Читать далее" перехода на полный пост.
Вот код:

<?php get_header(); ?>

    <div id="wrapper2">

        <div id="title"><h1>Блог</h1></div>
        <div id="clr"></div>
        <div id="posts">

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

         <div class="post">
            <div class="post-img"><img src="<?php bloginfo("template_directory");?>/img/post-img1.png" align="left"></div>
            <div class="post-info"><h2><?php the_title(); ?></h2>
            <p><?php the_excerpt(); ?></p>
            <a href="<?php the_permalink();?>">Читать дальше</a>
                </div>
         </div>

         <div id="clr"></div>

       <?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

        </div>

<?php get_sidebar(); ?>

    </div>
    </div>

</body>
</html>
  • Вопрос задан
  • 1115 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Если лень разбираться с иерархией шаблонов, коротко раскажу как сделать шаблон без этого. Для начала надо придумать какой будет структура шаблона, пускай это будет, как написано в комментариях это 2 различных типа данных + index.php:
  • Основной файл шаблона index.php
  • Статическая домашняя страница
  • Страница с циклом вывода всех записей блога


и структура файлов в шаблоне будет такая:
  • /index.php
  • /template_parts/home_page.php
  • /template_parts/blog_archive.php
  • /template_parts/blog_single.php
  • /template_parts/main_header.php
  • /template_parts/main_footer.php

index.php:
get_template_part('template_parts/main', 'header');
if ( is_front_page() || is_home() ){
	    // Homepage - начальная статическая страница
	    get_template_part('template_parts/home', 'page');
} else {

	if(get_post_type() == 'post' && is_archive() && !is_author()){
		//Список всех записей блога (Blog Archive)
		get_template_part('template_parts/blog', 'archive');
	}
	if(get_post_type() == 'post' && is_single()){
		//Одиночная запись блога
		get_template_part('template_parts/blog', 'single');
	}

	//Вариантов вывода может быть множество (смотри документацию):
	if(is_page() && !is_search() && !is_page_template() && !is_404()){ }
	if(get_post_type() == 'my_custom_post_type_name' && is_single()){ }
	if(is_404()){ }
	if(is_search()){ }
	if (is_archive() && is_author()){ }
	if(is_page_template('my_custom_template_name.php')) { }
}
get_template_part('template_parts/main', 'footer');


blog_archive.php:
if ( have_posts() ) : while ( have_posts() ) : the_post();
	//В этом цикле выводим посты блога, например:
	echo 'Заголовок: ' . get_the_title() . ', текст: ' . get_the_excerpt();
endwhile; else:
_e('Sorry, no posts matched your criteria.');
endif;
//Сбрасываем цикл, если будем запускать повторный цикл с другими параметрами на этой же странице:
wp_reset_query();


blog_single.php и home_page.php:
while (have_posts()) : the_post();
	//Выводим содержание поста:
	the_content();
endwhile;


Один раз написав шаблон "с нуля" Вы будете знать как работает каждая строчка кода и проблем больше не будет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rekurt
Я никита
Данный код нужно вставлять в файл archive.php. Вы так делаете?
Ответ написан
Punkie
@Punkie
включите режим debug с выводом в файл:
wp-config.cfg:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);


В результате в папке wp-content при возникновении ошибок будет создаваться debug.log, где вы и увидите причину.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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