Попытка получить WordPress PHP внутри оператора HTML echo

Я думал, что у меня это было сразу после прочтения многих статей SO, но я продолжаю получать ошибки. По сути, в моем шаблоне страницы content.php я хотел отобразить другой тег статьи в зависимости от того, находитесь ли вы на странице архива или отдельной публикации. Итак, я делал что-то вроде этого:

<?php if ( is_archive() ) {
    echo '<article id = "post-' . the_ID() . '">';
        } else {
    echo '<article id = "post-' . the_ID() . ' . "post_class() . '">';
}
?>

Но то, что происходит здесь, вместо того, чтобы выдавать идентификатор на странице, поэтому итоговый HTML-код выглядит так:

1234<article id = "post-">Content Goes Here</article>

когда это должно быть ....

<article id = "post-1234">Content Goes Here</article>

так почему это не появляется правильно?

Я подошел ближе, используя такой код: echo '<article id = "post-'. Get_the_ID (). '"'. post_class (). '>'; Таким образом, код класса появляется, но снова за пределами тега архива. Так что это беспорядок.

Adam Bell 30.12.2018 01:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
378
2

Ответы 2

the_ID() (и довольно много других функций WP) имеет вариант get_the_ID(), который вы захотите использовать здесь. the_ID() создает собственное внутреннее эхо; get_the_ID()возвращается это.

Просто измените свой код на: the_ID() по умолчанию имеет параметр echo true, поэтому он печатает идентификатор, но get_the_ID() возвращает идентификатор, который объединяется с вашим html-кодом. Вы можете получить более подробную информацию, нажав здесь. А также удалили двойные цитаты из части else после функции post_class().

<?php if ( is_archive() ) {
    echo '<article id = "post-' . get_the_ID() . '">';
        } else {
    echo '<article id = "post-' . get_the_ID() . '". post_class() .'>';
}
?>

Я это вижу, но после добавления этого кода я получил еще одну ошибку для кода, который раньше был хорош. Ошибка: Ошибка синтаксического анализа: ошибка синтаксиса, неожиданный '<' в / www / webroot / mysite / wordpress / wp-content / themes / orchestra / te‌ mplate-parts / content‌ .php в строке 19 Этот код: < ? php the_title (sprintf ('<h2 class = "entry-title"> <a href = "%s" rel = "bookmark">', esc_url (get_permalink ())), '</a> </h2> '); ?>

Adam Bell 30.12.2018 00:43

Кроме того, если я поменяю местами эти два оператора эха, эта ошибка появится в строке 14, которая в настоящее время является первым оператором эха, у которого нет post_class () в конце.

Adam Bell 30.12.2018 00:56

Да, избавляюсь от. post_class (). ' сработало, но почему?

Adam Bell 30.12.2018 00:58

<? php the_title (sprintf ('<h2 class = "entry-title"> <a href = "%s" rel = "bookmark">', esc_url (get_permalink ())), '</a> </ h2 > '); ?> ошибка для этой строки синтаксическая и не имеет ничего общего с предыдущей.

Tristup 31.12.2018 05:44

post_class () добавлен в устаревшем виде. Вы должны быть очень внимательны, когда используете одинарные и двойные кавычки в выражении echo. Закрытие и открытие должно происходить надлежащим образом.

Tristup 31.12.2018 05:45

Другие вопросы по теме