tinymce 4

WordPress non inserisce gli shortcode dopo l’aggiornamento

Per un cliente, a seguito di un aggiornamento alla versione 3.9.1 di WordPress, si e’ venuta a causare una fastidiosa anomalia.

Il cliente utilizza il thema nimble acquistato su themeforest e quest’ultimo risulta compatibile sino alla Versione 3.6 di WordPress. Vi e’ da dire che il cliente si era messo in contatto con il supporto tecnico di chi ha realizzato il tema ma questi per tutta risposta dicono di acquistarne uno nuovo e che il tema e’ compatibile sino alla versione 3.6, lasciamo perdere l’atteggiamento e passiamo a qualcosa di più interessante.

Il problema che si riscontrava era l’impossibilità tramite Editor di inserire gli Shortcode.

Questo problema e’ causato dall’aggiornamento di wordpress e dal rispettivo aggiornamento di TinyMCE dalla versione 3 alla versione 4.

L’aggiornamento di TinyMCE porta con se varie migliorie e modifiche tra cui alcuni comandi di base.

Cosa fare?

Per farla breve e passare alla soluzione il tema originale si presentava in questo modo:

if(window.tinyMCE) {
window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext);
tinyMCEPopup.editor.execCommand('mceRepaint');
tinyMCEPopup.close();
}

Il comando “incriminato” e’:

tinyMCE.execInstanceCommand

cambiato in:

tinyMCE.execCommand

quindi e’ bastato modificare il tutto che e’ diventato:

if(window.tinyMCE) {
window.tinyMCE.execCommand('mceInsertContent', false, tagtext);
tinyMCEPopup.editor.execCommand('mceRepaint');
tinyMCEPopup.close();
}

Volendo poi raffinare il tutto e renderlo compatibile con vecchie versione possiamo utilizzare:

if(window.tinyMCE) {

    /* Verifichiamo la versione di TinyMCE */
    var tmce_ver=window.tinyMCE.majorVersion;

    if (tmce_ver>="4") {
        window.tinyMCE.execCommand('mceInsertContent', false, tagtext);
    } else {
        window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext);
    }

    tinyMCEPopup.editor.execCommand('mceRepaint');
    tinyMCEPopup.close();
    }
    return;
}

 

Spero possa essere utile.