Сохранять форматирование содержимого короткого кода

Как сохранить форматирование содержимого в блоке короткого кода, когда я переключаюсь между визуальным и текстовым редактором в TinyMCE? Как и в, между [myshortcode] и [/myshortcode] . Я использую JSON внутри короткого кода.

Я просмотрел контекст переключателя между визуальным и HTML-вкладкой и готовый плагин « Сохраненный HTML-редактор» . Плагин кажется хорошим, но у меня есть сотни сайтов и сотни клиентов, которые владеют этими сайтами, и я не хочу рисковать испортить их контент с помощью решений «Fix it», необходимых этому плагину. На самом деле то, что я прошу, похоже, является особенным для раздела содержимого блоков коротких кодов, поэтому я надеюсь на решение, которое «легче», чем в защищенном редакторе HTML Editor.

Вот пример «before», в текстовом режиме:

 [myshortcode] { "map": { "zoom": 5 } } [/myshortcode] 

Теперь вот пример перехода в визуальный режим:

 [myshortcode] { "map": { "zoom": 5 } } [/myshortcode] 

После этого, если вы вернетесь в текстовый режим, вы увидите:

 [myshortcode] { "map": { "zoom": 5 } } [/myshortcode] 

Solutions Collecting From Web of "Сохранять форматирование содержимого короткого кода"

Это не прямой ответ на ваш вопрос, но если у вас есть опция, я бы реструктурировал короткий код, чтобы он взял один или несколько атрибутов, которые затем подключались к правильному формату JSON. например:

 [myshortcode zoom="5"] 

Это не только помешало бы редакторам вашего сайта делать синтаксические ошибки (или, по крайней мере, они делали бы разные!), Но, вероятно, были бы немного более структурированными и безопасными. Например, ваш атрибут shortcode zoom может гарантировать, что разрешены только числовые значения и может установить разумное значение по умолчанию для тех, которые не устанавливают att с их коротким кодом:

 // [myshortcode zoom={integer}] function myshortcode_func( $atts ) { $atts = shortcode_atts( array( // defaults 'zoom' => 5, // etc... ), $atts ); // sanitize! $atts['zoom'] = intval( $atts['zoom'] ); // do lots of fancy JSON things } add_shortcode( 'myshortcode', 'myshortcode_func' );