Я хочу использовать значения, возвращенные от двух вызовов функции в моей 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>';
... но как я получаю их всех в одном отдельном операторе?
echo '<li><a href="', the_permalink(), '">', the_title(), '</a></li>';
Причина возникновения проблем заключается в том, что 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>";
Это, конечно, при условии, что вы вызываете это из внутри цикла , иначе для получения желаемого результата потребуется немного больше, чем это указано.
printf( '<li><a href="%s">%s</a></li>', the_permalink(), the_title() );
Использование конкатенации (разрывы строк не требуются):
echo '<li><a href="'
. the_permalink()
. '">'
. the_title()
. '</a></li>';
echo "<li><a href=".the_permalink().">".the_title()."</a></li>";