@freeman0204

Почему эти циклы разные но работают одинаково?

Здесь все норм.
<?php if (have_posts() ) { : while (have_posts() ) : the_post(); ?>

<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>


В первом примере кода while и if заканчиваются так <?php endwhile; ?>
<?php endif; ?> и каждый обрамлен <?php ?>. В коде ниже такого нет, if заканчивается так } // конец if просто скобкой и while <?php } /* конец while */ ?> так же, как то странно только скобка обрамлена <?php ?> . Это альтернативная запись такая?

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

	<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
		<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
		<?php the_content(); ?>
	</div>

	<?php } /* конец while */ ?>

	<div class="navigation">
		<div class="next-posts"><?php next_posts_link(); ?></div>
		<div class="prev-posts"><?php previous_posts_link(); ?></div>
	</div>

<?php
} // конец if
else 
	echo "<h2>Записей нет.</h2>";


Это как сказано в статье минимальный стандартный цикл ВП но если вставить в него вместо // Post Content here функцию <?php the_title(); ?> то там синтаксическая ошибка, почему так?
<?php
    if ( have_posts() ) :
        while ( have_posts() ) :
            the_post();
            //
            // Post Content here
            //
        endwhile; // end while
    endif; // end if
?>
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
IvanCher
@IvanCher
Мысли шире
Может стоит всё же сперва подучить php ? Он очень легкий, за пару вечером освоите.
Если коротко, то скажу так - php это язык программирования, который читается интерпретатором и выполняется только та часть, что находится между "<?php" и "?>".
Если это конец файла, то закрывающего тега "?>" может не быть. Вместо "<?php" может быть написано просто "<?".
Всё, что не в этих тегах, то не считается интерпретатором за язык программирования и выводится на экран, как есть.
Внутри php-кода нельзя открывать еще один блок php-кода. То есть между "<?php" и "?>" мы не можем еще раз написать "<?php", будет сразу ошибка синтаксическая.
В современных версиях php условие if записывается ввиде
if (true) {
// some actions
}

Но допустима и запись в старом виде
if (true):
// some actions
endif;

С циклом while история аналогичная.

Не знаю зачем я пишу тут такие основы, ведь если Вы не удосужились открыть хоть что-то и прочитать про php, то вряд ли и это прочтёте, но всё же а вдруг ... :)

Надеюсь как-то смог помочь.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы