Это не полный ответ, просто направление дизайна. Я думаю, что лучший подход это что-то вроде этого:
В админ редактировать пост
Извлеките все шорткоды из сохраненного сообщения и отобразите его в метабоксе, кроме редактора . Убедитесь, что они отображаются в том же порядке, что и короткие коды в крошечном редакторе.
В tinyMCE JavaScript API
Сделайте функцию jQuery, когда пользователь нажимает на шорткод, он меняет HTML-код из метабокса в редактор. И наоборот. Сам порядок должен быть в порядке ассоциации, но я не уверен в том, что он должен содержать короткие коды. Однако есть много способов создать красивое ID-соединение. Обновления шорткодов могут быть сделаны на лету с помощью AJAX.
Никогда не сохраняйте визуализированное состояние шорткода
Перед переключением редакторов, сохранением черновиков, автодрафтов и публикаций сделайте вызов API для запуска восстановления, чтобы отображенное состояние шорткода никогда не сохранялось ...
Это можно сделать, но вы должны быть знакомы с API tinyMCE, чтобы понять, где и когда получить доступ к содержимому редактора, и подключиться к действиям javascript перед «сохранить» и многое другое.
На одной странице редактирования поста может быть несколько редакторов tinyMCE.
Восстановить часть можно исследовать, глядя на [gallery]
SHORTCODE beaviour. Но клик [MY_SHORTCODE]
должен быть сделан с помощью некоторых приемов jQuery.
в скрипте admin_footer получите доступ к содержимому, где активен курсор:
var $editor_content = $(tinymce.activeEditor.getBody());
намек на то, как начать.