To nie jest pełna odpowiedź, tylko kierunek projektowania. Myślę, że najlepszym podejściem jest coś takiego:
W edytorze posta administratora
Zerwij wszystkie skróty z zapisanego postu i wyrenderuj je w metaboksie oprócz edytora . Upewnij się, że pojawiają się w tej samej kolejności, w jakiej występują krótkie kody w małym edytorze.
W tinyMCE javascript API
Wykonaj funkcję jQuery, gdy użytkownik kliknie krótki kod, zamienia HTML z metaboksu do edytora. I wzajemnie. Sama kolejność powinna być odpowiednia jako skojarzenie, ale nie jestem pewien, czy załączać krótkie kody. Istnieje jednak wiele sposobów zaprojektowania ładnego połączenia ID. Aktualizacji skrótów można dokonywać w locie za pomocą ajax.
Nigdy nie zapisuj renderowanego stanu shortcode
Przed przełączeniem edytorów zapisz wersje robocze, automatyczne wersje robocze i opublikuj, wykonaj wywołanie API, aby uruchomić przywracanie, aby renderowany stan krótkiego kodu nigdy nie został zapisany ...
Można to zrobić, ale musisz być zaznajomiony z interfejsem API tinyMCE, aby zrozumieć, gdzie i kiedy uzyskać dostęp do zawartości edytora, i podłączyć czynności javascript przed „zapisz” i więcej.
Może być kilka edytorów tinyMCE w tym samym edytowaniu postu.
Część przywracania można zbadać, patrząc na zachowanie [gallery]
krótkiego kodu. Ale kliknięcie [MY_SHORTCODE]
musi zostać wykonane przez kilka sztuczek jQuery.
w skrypcie admin_footer uzyskaj dostęp do zawartości aktywnego kursora za pomocą:
var $editor_content = $(tinymce.activeEditor.getBody());
jest wskazówką jak zacząć.