워드 프레스 쇼트 코드가 잘못된 위치에 있음
워드프레스 플러그인을 만들고 있는데 쇼트코드를 이용해서 포스트 안에 꽤 큰 코드를 넣고 싶습니다.내 문제를 시뮬레이션하는 간단한 코드를 받았습니다.
function shortcode_fn( $attributes ) {
wanted();
return "unwanted";
}
add_shortcode( 'simplenote', 'shortcode_fn');
function wanted(){
echo "wanted";
}
그리고 이 내용으로 글을 올립니다.
start
[simplenote]
end
결과는 다음과 같습니다.
wanted
start
unwanted
end
시작과 끝 사이에 '원하는' 텍스트를 넣었으면 합니다.가장 쉬운 해결책은 "wanted"를 wanted(원하는)로 돌려주는 것이라는 것을 알고 있지만, 이미 이 모든 기능을 가지고 있고 그 기능들은 꽤 큽니다.처음부터 다 쓰지 않고 쉬운 해결책이 있을까요?
@edit: 함수의 모든 에코를 인쇄하지 않고 문자열로 저장할 수 있는 방법이 있을까요?
쉽게 해결할 수 있는 방법은 출력 제어 기능을 사용하는 것입니다.
function shortcode_fn( $attributes ) {
ob_start(); // start a buffer
wanted(); // everything is echoed into a buffer
$wanted = ob_get_clean(); // get the buffer contents and clean it
return $wanted;
}
다음 링크를 따라오세요 http://codex.wordpress.org/Shortcode_API#Overview
_content가 표시되면 shortcode API는 "[myshortcode]"와 같은 등록된 shortcode를 파싱하고, 속성과 컨텐츠가 있는 경우 이를 분리하여 파싱하며, 해당 shortcode handler 함수를 전달합니다.단축 코드 처리기에서 반환된 문자열(메아리되지 않음)은 단축 코드 자체 대신에 게시물 본문에 삽입됩니다.
따라서 모든 쇼트코드 함수는 반환되어야 하며, "원하는" 함수를 다음과 같이 변경할 수 있습니다.
function wanted(){
return "wanted";
}
Ruslan Bes의 답변을 이용하면, 코드는 다음과 같습니다.
function shortcode_fn( $attributes ) {
ob_start(); // start a buffer
wanted(); // everything is echoed into a buffer
$wanted = ob_get_clean(); // get the buffer contents and clean it
return $wanted;
}
add_shortcode( 'simplenote', 'shortcode_fn');
function wanted(){
echo "wanted";
}
워드프레스의 표준 방식은 두 가지 기능을 제공하는 것입니다.하나.get_wanted()
원하는 끈을 돌려줄 수도 있고, 다른 하나는wanted()
, 다음과 같습니다.
function wanted() {
echo get_wanted();
}
둘 중 하나를 할 수 있지만 대부분의 코드를 한 곳에서만 사용할 수 있습니다.이 패턴은 WordPress의 일반적인 패턴입니다. 예를 들어 vs.
@Ruslan이 언급한 것처럼 문자열을 만들기 위해 기존 함수를 다시 작성하지 않고 가장 일반적인 방법은 출력 제어를 사용하는 것입니다.
언급URL : https://stackoverflow.com/questions/23334359/wordpress-shortcodes-in-the-wrong-place
'programing' 카테고리의 다른 글
스위프트에서 UITextField가 숫자만 가져가도록 제한하는 방법은? (0) | 2023.10.18 |
---|---|
왜 음의 오류를 반환합니까?(예: 반환 -EIO) (0) | 2023.10.18 |
C/C++가 표준 ABI를 정의할 경우 "잃을" 수 있는 것은 무엇입니까? (0) | 2023.10.18 |
GDB에 구조물 값 표시 (0) | 2023.10.18 |
java.io .FileNotFoundException: 클래스 경로 리소스가 없으므로 열 수 없습니다. (0) | 2023.10.18 |