Echo를 사용하는 동안 기능 호출과 문자열을 연결하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2242861

  •  19-09-2019
  •  | 
  •  

문제

내 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 () 그리고 제목() 돌아 오지 마십시오. 대신 사용하십시오 get_permalink () 그리고 $ post-> post_title. 기억하다 get_permalink () Post ID ($ 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>";

사용 <?php the_title_attribute() ?>. 현재 게시물의 제목을 표시하거나 반환합니다. 그것은 _title ()의 기능을 다소 복제하지만 HTML 태그를 벗기고 특정 문자 (인용 포함)를 해당 문자 엔티티로 변환하여 제목의 '깨끗한'버전을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top