Як уникнути "]" у короткому коді?


17

Як уникнути правої дужки у короткому коді?

Я працюю над плагіном Google Map, який має закодовані точки. Іноді в полігонах є] в ньому, що змушує WP думати, що це кінець короткого коду.

Наприклад:

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

Я спробував, ]що не спричиняє проблеми для WP, але це проблема для мого коду карти Google. Я міг би використовувати Regex для заміни], але, можливо, є більш простий спосіб. Чи має короткий код втечі?

Відповіді:


18

Я не знаю офіційного синтаксису втечі для коротких кодів, і, швидше за все, його немає.

Коли Wordpress аналізує шорткоди, він шукає [ і ] . Якщо ви хочете використовувати квадратні дужки в рамках короткого коду, використовуючи відповідні html-об'єкти ASCII уникає їх.

Тобто заміна [ на [і ] на ]. Wordpress не розпізнається ]як кінець короткого коду.

Чи це відповідає вашим цілям, очевидно, залежить від того, чи буде він перетворений ] до того, як він буде переданий API Google Maps, чи API обробляє його так, як очікувалося. Я з цим не маю досвіду, тому не можу сказати.


Дякую за відповідь. У своєму питанні я забув поставити "& # 93;" в кодовому блоці, щоб він вийшов як ']'. Я відредагував своє запитання. Сутність HTML працює для WP, але не для Карт Google. Мені доведеться використовувати Regex для заміни HTML-сутностей. Дуже дякую за допомогу.
Laxmidi

@Laxmidi Моя вище "здогадка", що немає впевненості, що межує з певністю - просто хотілося бути обережними, щоб не надавати дезінформації. Якби це було, я впевнений, що стаття про кодекс у API Shortcode API згадує його. Я думаю, що заміна після цього - найкраща ставка. Чи потрібен вам регулярний вираз для одного символу? Я думаю, що str_replace()слід також виконати роботу. Було б менш ресурсоємним, якби це було.
Йоганнес Піл

1
@JohannesPille привіт це стареньке, але мені потрібно [] також замінити на & # 93 ;. Перший час збереження у WP працює і працює, але при редагуванні допису / сторінки WP перетворюється & # 93; в]. (потрібно це для відстеження подій Google на кнопках шорт-коду) з повагою
alex

Як сказав @alex, якщо перейти на візуальну вкладку і повернутися до вкладки коду, ви побачите, що tinyMCE змінює спеціальні символи назад на [], а потім порушує код.
Сауло Паділха

tinyMCE - це Javascript та підключається модуль. Погляньте на wpse / questions / 223677 / add-custom-text-pattern-in-the-wp-4-5-visual-editor . @alex
Йоганнес

2

Виходячи з відповіді Йоганнеса Пілла, є функція wp для виходу з квадратних дужок для використання тексту в параметрах короткого коду:

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

Часто люди пропонують використовувати вміст $ короткого коду для текстових параметрів, але бувають випадки, коли в шорткоді є багато таких текстових параметрів.


2

Тут, мабуть, є офіційна сторінка: Короткі штрихи

Витяг:

Для цього вам потрібно уникнути короткого коду, використовуючи два набори дужок, а не один. Отже, щоб відобразити це у своєму дописі:

[галерея]

Ви б написали це:

[[галерея]]


0

Навіть якщо ви НЕ граєте з URL-адресою, використовуйте urldecode (ваш атрибут_значення) з% 5B та% 5D, що використовується як заміна для [і] у вашому атрибутивному значенні .

Ваш код може виглядати приблизно так:

На вашій wp-сторінці: [my_shortcode myattr="%5Bmyattribute_value%5D"]

Потім у своїй функції короткого коду просто зробіть це:

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

Це відновить символи [і] в $ origvalue, так що $ origvalue тепер містить: [myattribute_value]

Порада. Якщо ви граєте з URL-адресою, зробіть те ж саме, але додайте до коду функції наступне:

$urlvalue = urlencode($origvalue);

Якщо це не ясно: ТАК, я роблю urlencode (urldecode (деяке значення від $ atts)), щоб створити правильну частину URL-адреси.

Досить просто, сподіваюся, що це допомагає.

П’єр


-1

Це старе питання, але ось вирішення проблеми використання css. Замість дужок укладіть символи в проміжок, наприклад:

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

потім додайте це до таблиці стилів теми:

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

результат буде виглядати приблизно так:

[some string]


3
Питання полягає у вставці ]як частини вмісту, а не в тому, як його відображати.
Марк Каплун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.