Как связать строки с вызовами функции при использовании эха?

Я хочу использовать значения, возвращенные от двух вызовов функции в моей echo'ed строке HTML.

<li><a href="the_permalink()">the_title()</a></li>

Следующее хорошо работает:

echo '<li><a href="';
echo the_permalink();
echo '">';
echo the_title();
echo '</a></li>';

... но как я получаю их всех в одном отдельном операторе?

5
задан mickmackusa 18 May 2018 в 06:33
поделиться

5 ответов

echo '<li><a href="', the_permalink(), '">', the_title(), '</a></li>';
6
ответ дан 18 December 2019 в 08:27
поделиться

Причина возникновения проблем заключается в том, что the_permalink () и the_title () не возвращаются, они повторяются. Вместо этого используйте get_permalink () и $ post-> post_title . Помните, что для get_permalink () требуется идентификатор сообщения ($ post-> ID) в качестве параметра. Я знаю, что это раздражает и противоречит интуиции, но так работает Wordpress (см. Субъективность в комментариях к этому ответу).

Это объясняет, почему второй пример работает в вашем первоначальном вопросе. Если вы вызываете функцию, которая печатает из строки, эхо будет выводиться до конца строки.

Итак, это:

echo ' this should be before the link: '.the_permalink().' But it is not.';

не будет работать должным образом. Вместо этого он выдаст следующее:

http://example.com this should be before the link: But it is not.

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

Чтобы округлить его, это будет выглядеть примерно так:

echo '<li><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>';

Или, как вы изначально просили, просто экранировать их, поставьте перед цитатой обратную косую черту. Примерно так (одинарные кавычки были удалены)

echo "<li><a href=\"".get_permalink($post->ID)."\">".$post->post_title."</a></li>";

Это, конечно, при условии, что вы вызываете это из внутри цикла , иначе для получения желаемого результата потребуется немного больше, чем это указано.

10
ответ дан 18 December 2019 в 08:27
поделиться
printf( '<li><a href="%s">%s</a></li>', the_permalink(), the_title() );
2
ответ дан 18 December 2019 в 08:27
поделиться

Использование конкатенации (разрывы строк не требуются):

echo '<li><a href="'
 . the_permalink()
 . '">'
 . the_title()
 . '</a></li>';
1
ответ дан 18 December 2019 в 08:27
поделиться
echo "<li><a href=".the_permalink().">".the_title()."</a></li>";
0
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

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