WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com wordpress jino

Вывод постов

Учусь создавать свою тему с 0-я. В файле index.php есть такой код:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
	<div class="post">
		<!-- начало поста -->
		<h3 class="post-title"><?php the_title(); ?><!-- Заглавие поста --></h3>
		<p class="post-text">
			<?php the_content(); ?>
		</p>
		<!-- конец поста -->
	</div>
	<?php endwhile; ?>
	<!--  -->
	<?php else: ?>
	<!-- posts not found -->
	<?php endif; ?>
</div>

Как видите, заглавия и сам текст поста выводятся в теги с определенным .css оформлением.
Вод код css:

.post {
	max-width: 500px;
	width: 100%;
	min-width: 320px;
	height: 200px;
	word-wrap: break-word;
	display: block;
}
.post-title {
	margin: 5px auto;
}
.post-text {
	font-style: italic;
	font-size: 20px;
	color: white;
}

На выходе получаю все записи, но оформление не приходит а в консоли, вижу что мои теги
<p class="post-text"></p> - пустые, а вместо них, сам текст поста выводится в обыкновенном <p>. Пробовал в админке текст поста менять на обычный - либо добавлялся тэг <pre> либо <p>. Подскажите в чем проблема, как её можно решить?

0
4 месяца назад
  • 1

    Замени на это

    <?php echo get_the_title(); ?>
    <?php echo get_the_content(); ?>

    И почитай в чем разница:
    https://wp-kama.ru/function/get_the_content

    webazex 4 месяца назад

    Большое спасибо за ответ и за ссылку, жаль плюсонуть Вам не могу почему-то.

    Kama 4 месяца назад

    жаль плюсонуть Вам не могу почему-то.

    Поправил, баг был с выставлением правильного ответа...

    Комментировать
  • 0
    PHouse6 cайт: poweredhouse.ru

    Я бы для начала сделал так:

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    			<div class="post">
    				<!-- начало поста -->
    				<h3><?php the_title(); ?><!-- Заглавие поста --></h3>
    				<p>
    					<?php the_content(); ?>
    				</p>
    				<!-- конец поста -->
    			</div>
    			<?php endwhile; ?>
    			<!--  -->
    			<?php else: ?>
    			<!-- posts not found -->
    			<?php endif; ?>
    		</div>

    А стили для h3 и p относящиеся к <div class="post"> прописывать в css следующим образом:

    .post h3 {
    
    }
    .post p{
    
    }
    Комментировать
  • 0
    Kama6811

    the_content() сам оборачивает в p теги, поэтому тебе нужно его обернуть в div.

    <div class="post-text">
    	<?php the_content(); ?>
    </div>

    А то у тебя получается p тег и внутри него появляются еще p теги, который в результате вылазят наружу потому что браузер не позволяет содержать p внутри p...

    Или можно просто использовать как есть...

        <div class="post">
    		<!-- начало поста -->
    		<h3 class="post-title"><?php the_title(); ?><!-- Заглавие поста --></h3>
    
    		<?php the_content(); ?>
    		<!-- конец поста -->
    	</div>
    .post {
    	max-width: 500px;
    	width: 100%;
    	min-width: 320px;
    	height: 200px;
    	word-wrap: break-word;
    	display: block;
    
    	font-style: italic;
    	font-size: 20px;
    	color: white;
    }
    .post .post-title {
    	margin: 5px auto;
    }
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация