Come aggiungere un pulsante shortcode all'editor TinyMCE?

13 nov 2012, 05:21:28
Visualizzazioni: 66.2K
Voti: 39

Come creare un'icona per qualsiasi plugin nei post WordPress? Il codice che voglio inserire nel plugin apparirà nella barra del post [wp-admin/post.php].

Come questa immagine:

esempio barra degli strumenti tinymce con pulsante plugin

Risultato: Se clicco sull'icona, viene automaticamente scritto [plugin] nel contenuto del post come questo:

esempio di shortcode inserito nell'editor

2
Commenti

Aggiungi uno screenshot del risultato che desideri ottenere. Non è chiaro cosa tu voglia.

fuxia fuxia
13 nov 2012 06:13:22

Penso che tu voglia creare un plugin che aggiunga un pulsante TinyMCE all'editor per inserire uno shortcode di WordPress, giusto?

developdaly developdaly
13 nov 2012 06:40:19
Tutte le risposte alla domanda 2
3
73

Per aggiungere il nostro pulsante all'editor TinyMCE dobbiamo fare diverse operazioni:

  1. Aggiungere il nostro pulsante alla barra degli strumenti
  2. Registrare un plugin TinyMCE
  3. Creare quel plugin TinyMCE che dice a TinyMCE cosa fare quando il nostro pulsante viene cliccato.

Passaggi #1 e #2

In questi passaggi registriamo il nostro plugin TinyMCE che risiederà all'interno di un file javascript in 'path/to/shortcode.js' (vedi wpse72394_register_tinymce_plugin() qui sotto)

 // processo di inizializzazione per registrare il nostro pulsante
 add_action('init', 'wpse72394_shortcode_button_init');
 function wpse72394_shortcode_button_init() {

      //Interrompi subito se l'utente non vedrà mai TinyMCE
      if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') && get_user_option('rich_editing') == 'true')
           return;

      //Aggiungi un callback per registrare il nostro plugin tinymce   
      add_filter("mce_external_plugins", "wpse72394_register_tinymce_plugin"); 

      // Aggiungi un callback per aggiungere il nostro pulsante alla barra degli strumenti TinyMCE
      add_filter('mce_buttons', 'wpse72394_add_tinymce_button');
}


//Questo callback registra il nostro plugin
function wpse72394_register_tinymce_plugin($plugin_array) {
    $plugin_array['wpse72394_button'] = 'path/to/shortcode.js';
    return $plugin_array;
}

//Questo callback aggiunge il nostro pulsante alla barra degli strumenti
function wpse72394_add_tinymce_button($buttons) {
            //Aggiungi l'ID del pulsante all'array $button
    $buttons[] = "wpse72394_button";
    return $buttons;
}

Passaggio #3

Ora dobbiamo creare il nostro plugin TinyMCE. Questo andrà in un file 'path/to/shortcode.js' (come specificato nei passaggi precedenti).

jQuery(document).ready(function($) {

    tinymce.create('tinymce.plugins.wpse72394_plugin', {
        init : function(ed, url) {
                // Registra il comando per quando il pulsante viene cliccato
                ed.addCommand('wpse72394_insert_shortcode', function() {
                    selected = tinyMCE.activeEditor.selection.getContent();

                    if( selected ){
                        //Se del testo è selezionato quando il pulsante viene cliccato
                        //Avvolgilo con lo shortcode
                        content =  '[shortcode]'+selected+'[/shortcode]';
                    }else{
                        content =  '[shortcode]';
                    }

                    tinymce.execCommand('mceInsertContent', false, content);
                });

            // Registra i pulsanti - attiva il comando sopra quando cliccato
            ed.addButton('wpse72394_button', {title : 'Inserisci shortcode', cmd : 'wpse72394_insert_shortcode', image: url + '/path/to/image.png' });
        },   
    });

    // Registra il nostro plugin TinyMCE
    // il primo parametro è l'ID del pulsante
    // il secondo parametro deve corrispondere al primo parametro della funzione tinymce.create() sopra
    tinymce.PluginManager.add('wpse72394_button', tinymce.plugins.wpse72394_plugin);
});
13 nov 2012 19:24:42
Commenti

Nel passaggio 1, cambiare l'hook init con l'hook admin_init potrebbe anche risparmiare un po' di elaborazione extra sul front-end.

Tim Malone Tim Malone
16 nov 2016 04:01:48

Dipende, puoi avere TinyMCE anche sul front-end. Ma sì, se questo è solo lato admin, admin_init sarebbe preferibile.

Stephen Harris Stephen Harris
17 nov 2016 12:19:52

Quindi shortcode.js deve essere posizionato qui wp-includes/js/tinymce/js/shortcode.js e inoltre il pulsante non ha un'icona

Jadeye Jadeye
8 ago 2020 23:03:11
1

C'è troppo da includere per mettere l'intera risposta qui, quindi consulta questa guida: http://wp.smashingmagazine.com/2012/05/01/wordpress-shortcodes-complete-guide/

Devi creare un file Javascript che gestisca l'azione del pulsante che registri tramite WordPress e che inserisce il pulsante TinyMCE nell'editor.

13 nov 2012 06:44:41
Commenti

Utilizza query_posts quindi forse non è il miglior esempio a cui collegarsi.

Brad Dalton Brad Dalton
11 lug 2014 17:27:42