Intereting Posts
Быстрые шрифты на мобильных устройствах Лучшее изображение не загружается Специальные символы и пробелы не передаются правильно с помощью вызова AJAX. Настройки темы по умолчанию, странное поведение перед первым сохранением Скрыть одного администратора от другого администратора Удалить таксономию, если нет таксономии для пользовательского типа отправки? Добавление структурированных данных JSON в WordPress Таблица опций огромна. Что я могу сделать? тот же wordpress, 2 домена Тема сломана после обновления до WordPress 4.5, отсутствует таблица стилей? определение дочерней страницы постоянной ссылки Сохранять данные временной регистрации Пропустить первое сообщение в категории Архив Почему функция wp_mail () не отправляет электронные письма и отображает «0» в ответе «Сеть» Chrome Как отображать сообщения в одной строке на странице?

Синтаксическая ошибка при попытке вставить мой цикл в неупорядоченный список?

Я очень новичок в разработке PHP и WordPress, и у меня есть следующая проблема с попыткой вставить некоторый HTML-код в цикл сообщений.

Я попробовал что-то вроде этого:

<?php if (have_posts()) : <ul> // Start the Loop. while (have_posts()) : the_post(); /* * Include the post format-specific template for the content. If you want to * use this in a child theme, then include a file called called content-___.php * (where ___ is the post format) and that will be used instead. */ <li> get_template_part('contentArchive', get_post_format()); </li> endwhile; </ul> endwhile; ?> 

Поскольку вы можете видеть, что я хочу неупорядоченный список ( < ul> ) и в него, я хочу поместить один элемент списка ( < li> ) для каждой итерации цикла while , но Aptana Studio дает мне сообщение об ошибке синтаксиса на <ul> и на <li>

Зачем? В чем проблема? Как я могу это исправить?

Tnx

Solutions Collecting From Web of "Синтаксическая ошибка при попытке вставить мой цикл в неупорядоченный список?"

Вы не добавляете HTML-код в свой файл, вы добавляете недопустимый PHP.

Напомним, что в PHP все между <?php и ?> Является PHP-кодом.

Так что это верно PHP:

 <?php echo 'hello world';! ?> 

Это также справедливо:

 <b><?php echo 'hello world'; ?></b> 

Это недействительно:

 <?php <b> echo 'hello world'; </b> ?> 

Зачем? Потому что это неверный PHP. Это допустимый HTML-тег yes, но вы не поместили его в HTML, вы помещали его между тегами, поэтому это PHP-код, и это неверный PHP-код.

Sidenotes

  • Вы не правильно отпечатываете свой код. Любой хороший редактор автоматически сделает это за вас, PHPStorm имеет вариант переформатирования, Sublime авто-отступы по мере ввода, экономят время и усилия и используют редактор, который сделает это за вас. Отступы делают ваш код более легким для чтения, а ошибки легче обнаружить
  • Используйте скобки вместо сокращения, например, if( this ) { do that } , он имеет более широкую поддержку среди редакторов и проверок. Слишком легко добавить блуждающий endwhile; (ваш исходный код имеет 1 цикл while, но вы закрываете его дважды, это не имеет смысла и только путает). Если вы используете { и } хороший редактор автоматически наберет для вас закрывающий кронштейн и соответственно сделает отступ.

Итак, в заключение, ваш код должен выглядеть следующим образом:

 <?php if ( have_posts() ) { echo '<ul>'; while ( have_posts() ) { the_post(); echo '<li>'; get_template_part( 'contentArchive', get_post_format() ); echo '</li>'; } echo '</ul>'; } 

Изменения:

  • Используется эхо, чтобы распечатать html
  • удаленные посторонние пустые строки и преобразованные в вкладки
  • фиксированный отступы
  • Используемые фигурные скобки вместо синтаксиса сокращенного PHP
  • удаленный трейлинг-тег закрытия PHP, закрывающие теги не нужны в конце PHP-файла, если последнее – это PHP-код

Вы включаете HTML-элементы, не закрывая теги php. Кроме того, последний должен быть endif , а не последним.

 <?php if (have_posts()) : ?> <ul> <?php // Start the Loop. while (have_posts()) : the_post(); /* * Include the post format-specific template for the content. If you want to * use this in a child theme, then include a file called called content-___.php * (where ___ is the post format) and that will be used instead. */ ?> <li> <?php get_template_part('contentArchive', get_post_format()); ?> </li> <?php endwhile; ?> </ul> <?php endif; ?>