짧은 코드에서 ']'을 어떻게 피할 수 있습니까?


17

짧은 코드에서 올바른 괄호를 피하려면 어떻게합니까?

포인트가 인코딩 된 Google Map 플러그인을 작성 중입니다. 때로는 다각형에]가 포함되어 있기 때문에 WP는 단축 코드의 끝이라고 생각합니다.

예를 들면 다음과 같습니다.

[my_shortcode latitude='36.93'  longitude='-72.98' encoded_points='ortlF~g]tM?cZEH`z]}|@DQfi]' ]

나는 시도했다 ]WP에 대한 문제가 발생되지이다,하지만 내 구글 맵 코드에 대한 문제를 일으키는. 대체 할 정규식을 사용할 수는 있지만 더 간단한 방법이있을 수 있습니다. 단축 코드에 이스케이프 문자가 있습니까?

답변:


18

짧은 코드에 대한 공식 이스케이프 구문을 모르며 아마도 없습니다.

워드 프레스가 단축 코드를 구문 분석 할 때 []를 찾습니다 . 짧은 코드 내에서 대괄호를 사용하려면 각 HTML ASCII 엔티티를 사용하여 대괄호를 이스케이프하십시오.

[ by [and ]를 로 바꿉니다 ]. 워드 프레스는 ]단축 코드의 끝으로 인식되지 않습니다 .

귀하의 목적에 맞는지 여부 는 Google Maps API로 전달되기 전에 ] 로 변환 되는지 또는 API가 예상대로 처리하는지에 따라 다릅니다 . 나는 그것에 대한 경험이 없으므로 말할 수 없습니다.


답변 주셔서 감사합니다. 내 질문에 '& # 93;' 코드 블록에서 ']'로 나왔습니다. 내 질문을 편집했습니다. HTML 엔티티는 WP에서는 작동하지만 Google지도에서는 ​​작동하지 않습니다. HTML 엔터티를 바꾸려면 Regex를 사용해야합니다. 도와 주셔서 감사합니다.
Laxmidi

@Laxmidi 위의 "추측"은 확실하게 탈출 문자 경계가 없다는 것입니다. 단지 잘못된 정보를 제공하지 않도록주의하고 싶었습니다. 있다면 Shortcode API 의 코덱스 기사에서 언급 할 것입니다. 나중에 교체하는 것이 최선의 방법이라고 생각합니다. 한 캐릭터에 대한 정규식이 필요합니까? 나는 str_replace()일을 끝내야 한다고 생각 합니다. 그렇다면 자원 집약도가 떨어집니다.
Johannes Pille

1
@JohannesPille 안녕하세요, oldie이지만 []도 & # 93;으로 바꿔야합니다. WP로 처음 저장하면 작동하지만 게시 / 페이지를 편집 할 때 WP가 & # 93; ]로. (짧은 코드 버튼에서 구글 이벤트 추적을 위해 이것이 필요합니다)
alex alex

@alex가 말했듯이 시각적 탭으로 전환하고 코드 탭으로 돌아 가면 tinyMCE가 특수 문자를 다시 []로 변경 한 다음 코드를 깨뜨리는 것을 볼 수 있습니다.
Saulo Padilha 2

tinyMCE는 Javascript이며 플러그 가능합니다. wpse / questions / 223677 / adding-custom-text-patterns-in-the-wp-5-visual-editor를 살펴보십시오 . @alex
Johannes Pille

2

Johannes Pille의 답변에 따라 짧은 코드 매개 변수에서 텍스트를 사용하기 위해 대괄호를 이스케이프 처리하는 wp 함수가 있습니다.

function my_esc_brackets($text = ''){
    return str_replace( [ "[" , "]" ] , [ "[" , "]" ] , $text );
}

종종 사람들은 텍스트 매개 변수에 짧은 코드의 $ content를 사용하도록 제안하지만 짧은 코드에 많은 텍스트 매개 변수가있는 경우가 있습니다.


2

여기에 공식 페이지가있는 것 같습니다 : 탈출 단축 코드

추출 :

이렇게하려면 단 하나 대신 두 개의 대괄호 세트를 사용하여 단축 코드를 이스케이프해야합니다. 게시물에 이것을 표시하려면 다음을 수행하십시오.

[갤러리]

당신은 이것을 쓸 것입니다 :

[[갤러리]]


0

url을 사용 하지 않더라도 attribute_value 에서 [및]의 대체로 사용 된 % 5B 및 % 5D와 함께 urldecode (속성 _ 값)를 사용하십시오.

그러면 코드가 다음과 같이 보일 수 있습니다.

wp 페이지에서 : [my_shortcode myattr="%5Bmyattribute_value%5D"]

그런 다음 단축 코드 기능에서 다음을 수행하십시오.

 $origvalue=urldecode($atts['myattr']);

$ origvalue에 [및] 문자가 복원되어 $ origvalue에 다음이 포함됩니다. [myattribute_value]

팁 : url을 사용하는 경우 동일한 작업을 수행하지만 기능 코드에 다음을 추가하십시오.

$urlvalue = urlencode($origvalue);

명확하지 않은 경우 : 예, URL의 올바른 부분을 만들기 위해 urlencode (urldecode (일부 $ atts))를 수행하고 있습니다.

아주 간단합니다. 이것이 도움이 되길 바랍니다.

피에르


-1

이것은 오래된 질문이지만 CSS를 사용하는 해결 방법이 있습니다. 중괄호 대신 다음과 같이 범위에 문자를 넣으십시오.

<span class="bracket">some string</span>

그런 다음 테마 스타일 시트에 이것을 추가하십시오.

span.bracket:before {
  content: '['
}
.colored-blocks span.bracket:after {
  content: ']'
}

결과는 다음과 같습니다.

[some string]


3
문제는 ]컨텐츠를 표시하는 방법이 아니라 컨텐츠의 일부로 삽입 하는 것입니다.
Mark Kaplun
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.