Ce n'est pas une réponse complète, juste une direction de conception. Je pense que la meilleure approche est quelque chose comme ceci:
Dans le post de modification de l'administrateur
Extrayez tous les shortcodes de la publication enregistrée et rendez-les dans une métabox, à l' exception de l'éditeur . Assurez-vous qu'ils apparaissent dans le même ordre que les shortcodes se produisent dans le petit éditeur.
Dans l'API javascript de tinyMCE
Faire une fonction jQuery, lorsque l'utilisateur clique sur un shortcode, il échange le HTML de la metabox dans l'éditeur. Et vice versa. L'ordre lui-même devrait être correct en tant qu'association, mais je ne crains pas de placer des shortcodes. Cependant, il existe de nombreuses façons de concevoir une belle connexion ID. Les mises à jour des shortcodes peuvent être effectuées à la volée avec ajax.
N'enregistrez jamais l'état de shortcode rendu
Avant de changer d'éditeur, d'enregistrer des brouillons, des brouillons automatiques et de publier, effectuez un appel d'API pour déclencher la restauration, de sorte que l'état de shortcode rendu ne soit jamais enregistré ...
Cela peut être fait, mais vous devez être familier avec l'API tinyMCE pour comprendre où et quand accéder au contenu de l'éditeur et vous connecter aux actions javascript avant de «sauvegarder» et plus encore.
Il peut y avoir plusieurs éditeur tinyMCE sur le même post-edit pageload.
La partie restauration peut être étudiée en regardant le [gallery]
code court. Mais le clic sur [MY_SHORTCODE]
doit être fait par quelques astuces jQuery.
dans le script admin_footer, accédez au contenu de l'endroit où le curseur est actif avec:
var $editor_content = $(tinymce.activeEditor.getBody());
est un indice sur la façon de commencer.