상현에 하루하루
All 개발자의 하루

워드프레스 문자열에서 숏코드 실행

( 업데이트: )

🤔 무엇을

PHP 파일에서 content를 가져온순간 데이터 타입이 문자열로 받아온다. 여기 데이터 내부에 숏코드가 포함되어있을때 그대로 데이터를 echo하거나 출력하면 숏코드는 내가 의도한대로 수행되지 않고 대괄호로 묶을 채로 출력한다.

그럼 어떻게 숏코드를 실행시킬 수 있을까?

지나고 말 별이 하나에 나의 없이 쓸쓸함과 쉬이 계십니다. 별에도 별이 불러 패, 있습니다. 내 이네들은 이름을 부끄러운 가난한 위에도 거외다. 경, 하나에 까닭이요, 헤는 봅니다. 이런 흙으로 이국 불러 하나에 듯합니다. 아침이 부끄러운 언덕 있습니다. 나는 이웃 다 그리고 청춘이 불러 새겨지는 오는 못 봅니다. 너무나 나의 내일 아무 애기 버리었습니다. 내 이름자 벌써 노루, 경, 패, 둘 북간도에 너무나 까닭입니다.[custom_shortcode1]

별빛이 다 지나고 잠, 쓸쓸함과 별들을 봅니다. 했던 가을 이웃 멀리 듯합니다. 잔디가 내린 책상을 별 별 이름자 파란 듯합니다. 그리고 경, 걱정도 있습니다. 너무나 묻힌 아직 남은 애기 하나 아침이 써 버리었습니다. 흙으로 벌레는 하나에 너무나 겨울이 쓸쓸함과 나는 봅니다. 피어나듯이 위에 쓸쓸함과 벌써 거외다. 패, 내린 지나가는 언덕 사랑과 어머님, 위에 하나에 별이 듯합니다. 하나에 파란 책상을 속의 지나가는 거외다. 것은 때 아침이 이제 릴케 말 계집애들의 버리었습니다. 새겨지는 헤는 마디씩 때 이네들은 노루, 덮어 까닭이요, 아무 있습니다.[custom_shortcode2]

이네들은 언덕 멀리 너무나 북간도에 불러 멀듯이, 못 별들을 듯합니다. 마디씩 북간도에 쓸쓸함과 헤는 겨울이 무덤 계십니다. 추억과 이름과, 프랑시스 위에 당신은 경, 있습니다. 추억과 동경과 새겨지는 다 별빛이 마디씩 북간도에 많은 버리었습니다. 가을 하나에 책상을 청춘이 소녀들의 거외다. 파란 내린 밤이 이름을 봅니다. 별 딴은 계집애들의 잠, 계십니다. 별 릴케 강아지, 동경과 봅니다. 아무 토끼, 같이 별 불러 위에 노새, 프랑시스 묻힌 계십니다. 별빛이 새겨지는 별에도 노루, 헤일 라이너 잔디가 아이들의 속의 있습니다.[custom_shortcode3]

🔑 해결

해당 문자열을 저장한 변수를 통해 do_shortcode() 함수를 사용해주면 된다.

do_shortcode() 내부에 숏코드의 문자열만 넣지 않아도 괜찮다.

$test = <<<EOD
지나고 말 별이 하나에 나의 없이 쓸쓸함과 쉬이 계십니다. 별에도 별이 불러 패, 있습니다. 내 이네들은 이름을 부끄러운 가난한 위에도 거외다. 경, 하나에 까닭이요, 헤는 봅니다. 이런 흙으로 이국 불러 하나에 듯합니다. 아침이 부끄러운 언덕 있습니다. 나는 이웃 다 그리고 청춘이 불러 새겨지는 오는 못 봅니다. 너무나 나의 내일 아무 애기 버리었습니다. 내 이름자 벌써 노루, 경, 패, 둘 북간도에 너무나 까닭입니다.[custom_shortcode1]

별빛이 다 지나고 잠, 쓸쓸함과 별들을 봅니다. 했던 가을 이웃 멀리 듯합니다. 잔디가 내린 책상을 별 별 이름자 파란 듯합니다. 그리고 경, 걱정도 있습니다. 너무나 묻힌 아직 남은 애기 하나 아침이 써 버리었습니다. 흙으로 벌레는 하나에 너무나 겨울이 쓸쓸함과 나는 봅니다. 피어나듯이 위에 쓸쓸함과 벌써 거외다. 패, 내린 지나가는 언덕 사랑과 어머님, 위에 하나에 별이 듯합니다. 하나에 파란 책상을 속의 지나가는 거외다. 것은 때 아침이 이제 릴케 말 계집애들의 버리었습니다. 새겨지는 헤는 마디씩 때 이네들은 노루, 덮어 까닭이요, 아무 있습니다.[custom_shortcode2]

이네들은 언덕 멀리 너무나 북간도에 불러 멀듯이, 못 별들을 듯합니다. 마디씩 북간도에 쓸쓸함과 헤는 겨울이 무덤 계십니다. 추억과 이름과, 프랑시스 위에 당신은 경, 있습니다. 추억과 동경과 새겨지는 다 별빛이 마디씩 북간도에 많은 버리었습니다. 가을 하나에 책상을 청춘이 소녀들의 거외다. 파란 내린 밤이 이름을 봅니다. 별 딴은 계집애들의 잠, 계십니다. 별 릴케 강아지, 동경과 봅니다. 아무 토끼, 같이 별 불러 위에 노새, 프랑시스 묻힌 계십니다. 별빛이 새겨지는 별에도 노루, 헤일 라이너 잔디가 아이들의 속의 있습니다.[custom_shortcode3]
EOD;

echo do_shortcode($test);

do_shortcode()가 어떻게 작동하는지 재대로 모르는 문제였다.