Molto probabilmente saprai che WordPress è in bundle con l'editor HTML WYSIWYG, TinyMCE. La varietà di funzionalità e la possibilità di estenderli tramite plugin lo rendono l'editor WYSIWYG più utilizzato al mondo. Tuttavia, WordPress non sfrutta tutte le sue funzionalità. WordPress lo personalizza e conserva solo parti che sono davvero utili per gli utenti, evitando di rovinare l'interfaccia utente. Ciò significa anche che alcune funzioni, ad esempio i pulsanti, sono state nascoste agli utenti. Puoi abilitare completamente i pulsanti MCE nascosti. In genere lo sono foglio di stile, sub, cenare pulsanti. Se anche quelli nascosti non soddisfano ancora le tue esigenze, devi creare un plugin TinyMCE per aggiungere il tuo. In questo tutorial, ti illustrerò le basi dell'aggiunta dei pulsanti di WordPress Editor creando un plug-in TinyMCE.
Come accennato in precedenza, creeremo un nuovo plug-in TinyMCE il cui compito è aggiungere i nuovi pulsanti desiderati. Quindi quali pulsanti aggiungeremo? Cercheremo di aggiungere due semplici pulsanti: Capolettera e messaggi recenti, in cui il primo ti dà la possibilità di convertire una lettera selezionata in una lettera capolettera, e quest'ultima mostrerà i post recenti. Il codice genera questi pulsanti mostrati di seguito.
Creiamo una nuova cartella denominata wptuts-bottoni dell'editor (ovviamente, puoi cambiarlo in qualcos'altro se vuoi) nella tua directory dei temi (sto usando TwentyTwelve). Continua a creare due nuovi file, wptuts.php che invoca PHP personalizzato e l'altro chiamato wptuts-plugin.js dove si trovano gli snippet di codice JavaScript. Infine, apri il tema functions.php file e includi il nuovo creato wptuts.php file in esso. Nota, ricorda di definire esattamente il suo percorso:
require ('wptuts-editor-buttons / wptuts.php');
Quindi dobbiamo preparare un codice per questi due pulsanti:
/ * Aggiungi questo codice in style.css * / .dropcap float: left; font-size: 80px; padding-right: 7px; altezza della linea: 72px;
add_shortcode ('recent-posts', 'wptuts_recent_posts'); function wptuts_recent_posts ($ atts) extract (shortcode_atts (array ('numbers' => '5',), $ atts)); $ rposts = new WP_Query (array ('posts_per_page' => $ numbers, 'orderby' => 'date')); if ($ rposts-> have_posts ()) $ html = 'messaggi recenti
Supponiamo che quando gli utenti fanno clic sul messaggi recenti pulsante, il browser aprirà una finestra di dialogo chiedendo loro il numero di post che vogliono mostrare. Dopo aver avuto quel numero, l'editor lo riempirà come argomento nel codice corto sopra. Ad esempio, se vogliamo mostrare sette post recenti, lo shortcode viene generato come segue:
[numeri di post recenti = "7" /]
Supponendo che abbiamo già il nuovo plug-in, dobbiamo registrarlo con WordPress per integrarlo nell'editor TinyMCE. Il codice è mostrato di seguito:
add_action ('init', 'wptuts_buttons'); function wptuts_buttons () add_filter ("mce_external_plugins", "wptuts_add_buttons"); add_filter ('mce_buttons', 'wptuts_register_buttons'); function wptuts_add_buttons ($ plugin_array) $ plugin_array ['wptuts'] = get_template_directory_uri (). '/Wptuts-editor-buttons/wptuts-plugin.js'; return $ plugin_array; function wptuts_register_buttons ($ buttons) array_push ($ buttons, 'dropcap', 'showrecent'); // dropcap ',' recentposts return $ buttons;
L'importante gancio per filtro mce_external_plugins
è usato per collegare il nuovo plugin a TinyMCE. Abbiamo bisogno di passare un ID del plugin (wptuts
) e l'URL assoluto che punta al nostro wptuts-plugin.js file. Il mce_buttons
hook è usato per dire all'editor TinyMCE quali pulsanti del nostro plugin vogliamo mostrare. Il capolettera e showrecent sono i valori ID di questi pulsanti che intendiamo creare. Tieni a mente questi valori, saranno utilizzati in seguito.
In generale, penso che il modo migliore per estendere o sviluppare qualcosa su una piattaforma sia consultare la documentazione per quella piattaforma. TinyMCE ha una sua wiki che potresti trovare utile. Seguendo un esempio di come creare un plugin TinyMCE, abbiamo il seguente codice di inizializzazione:
(function () tinymce.create ('tinymce.plugins.Wptuts', / ** * Inizializza il plugin, questo verrà eseguito dopo che il plugin è stato creato. * Questa chiamata viene eseguita prima che l'istanza dell'editor abbia terminato l'inizializzazione quindi usa l'evento onInit * dell'istanza dell'editor per intercettare quell'evento. * * @param tinymce.Editor ed Editor istanza in cui il plug-in è inizializzato. * @param string url URL assoluto in cui si trova il plug-in. * / init: function (ed, url) , / ** * Crea istanze di controllo basate sul nome incomming.Questo metodo normalmente non * è necessario in quanto il metodo addButton della classe tinymce.Editor è un modo più semplice di aggiungere pulsanti * ma a volte è necessario creare controlli più complessi come elenchi di caselle, pulsanti divisi, ecc. Quindi questo metodo * può essere utilizzato per crearli. * * @param String n Nome del controllo da creare. * @param tinymce.ControlManager cm Gestore di controlli per utilizzare inorder per creare un nuovo controllo. * @return tinymce.ui.Control Nuovo controllo inst ance o null se non è stato creato alcun controllo. * / createControl: function (n, cm) return null; , / ** * Restituisce informazioni sul plug-in come array nome / valore. * Le chiavi attuali sono longname, author, authorurl, infourl e version. * * @return Object Array nome / valore contenente informazioni sul plugin. * / getInfo: function () return longname: 'Wptuts Buttons', autore: 'Lee', authorurl: 'http://wp.tutsplus.com/author/leepham', infourl: 'http: // wiki. moxiecode.com/index.php/TinyMCE:Plugins/example ', version: "0.1"; ); // Registrati plugin tinymce.PluginManager.add ('wptuts', tinymce.plugins.Wptuts); ) ();
Ricorda di aggiungere questo codice nel wptuts-plugin.js file. Abbiamo lasciato per te i commenti del codice per capire facilmente cosa sta succedendo. Il codice sopra riportato fa solo due compiti principali:
creare
metodo. Il comportamento del nostro plugin sarà definito nel dentro
e CreateControl
funzioni. Puoi vedere che le informazioni del plugin sono dichiarate nel ottenere informazioni
funzione anche. Il nostro plugin avrà il nome Wptuts
e l'ID wptuts
come potete vedere.Nel dentro
funzione, iniziamo a creare i nostri pulsanti. Il codice visto come segue:
(function () tinymce.create ('tinymce.plugins.Wptuts', init: function (ed, url) ed.addButton ('dropcap', title: 'DropCap', cmd: 'dropcap', immagine: url + '/dropcap.jpg'); ed.addButton ('showrecent', title: 'Aggiungi post recenti shortcode', cmd: 'showrecent', immagine: url + '/recent.jpg');, // ... Hidden code); // Register plugin tinymce.PluginManager.add ('wptuts', tinymce.plugins.Wptuts);) ();
Usando il addButton
metodo del Ed
oggetto, diciamo all'editor corrente che vogliamo creare tutti questi pulsanti. Questo metodo accetta due argomenti:
cmd
proprietà, ha il valore di showrecent. Questo è l'ID del comando che viene eseguito ogni volta che viene chiamato, entreremo nei dettagli a breveImmagine
valore.Ora, controlla l'editor di WordPress e vedremo i nostri pulsanti visualizzati. Tuttavia, non fanno nulla al momento.
Abbiamo definito il nome dei comandi che verranno eseguiti dai nostri pulsanti, ma non abbiamo ancora definito ciò che verrà effettivamente eseguito. In questo passaggio, imposteremo le cose che faranno i nostri pulsanti. Dentro il dentro
funzione, continua ad aggiungere questo codice come mostrato:
(function () tinymce.create ('tinymce.plugins.Wptuts', init: function (ed, url) ed.addButton ('dropcap', title: 'DropCap', cmd: 'dropcap', immagine: url + '/dropcap.jpg'); ed.addButton ('showrecent', title: 'Aggiungi post recenti shortcode', cmd: 'showrecent', immagine: url + '/recent.jpg'); ed. addCommand ('dropcap', function () var selected_text = ed.selection.getContent (); var return_text = "; return_text = ''+ selected_text +''; ed.execCommand ('mceInsertContent', 0, return_text); ); ed.addCommand ('showrecent', function () var number = prompt ("Quanti post vuoi mostrare?"), shortcode; if (numero! == null) numero = parseInt (numero); if (numero > 0 && numero <= 20) shortcode = '[recent-post number="' + number + '"/]'; ed.execCommand('mceInsertContent', 0, shortcode); else alert("The number value is invalid. It should be from 0 to 20."); ); , //… Hidden code ); // Register plugin tinymce.PluginManager.add( 'wptuts', tinymce.plugins.Wptuts ); )();
Ora il ed.addCommand
il metodo ci aiuterà ad aggiungere un nuovo comando. È necessario passare l'ID del comando e la funzione di callback che verrà eseguita se è stata chiamata da ed.execCommand
metodo. Nota che Ed rappresenta il tinyMCE.activeEditor
oggetto. Diamo un'occhiata alle funzioni di callback:
capolettera
comando, il desiderio che vogliamo è quando un utente seleziona una lettera e fa clic su Capolettera pulsante, la lettera verrà quindi trasformata in forma di capolettera. Allora, come prendiamo quella lettera? Bene, il ed.selection.getContent
il metodo lo farà per noi. Quindi, una volta ottenuta questa lettera, la racchiudiamo all'interno di a campata
elemento. Ricorda di impostare il valore della classe di questo elemento su capolettera che abbiamo definito prima, giusto? Infine, abbiamo il testo completo che deve essere inserito nuovamente nell'editor. TinyMCE ha un comando predefinito con il nome mceInsertContent
che è usato per inserire contenuti specifici nell'editor, come usarlo è mostrato sopra. Il contenuto verrà passato come terzo argomento del mceInsertContent
metodo.Invece di aggiungere testo puro quando i pulsanti inseriscono il contenuto nell'editor visivo, possiamo renderlo molto più visivo registrando CSS personalizzati per i nostri pulsanti. Dipende dal tipo di dati del contenuto e puoi scegliere uno stile appropriato. Ad esempio, il nostro CapoletteraLo stile di s può essere uguale a quello mostrato sul front-end. Così puoi prendere il suo codice CSS nella parte superiore di questo post, quindi inserirlo nel redattore style.css file (per impostazione predefinita, vedere add_editor_style
per il detais).
Per gli shortcode, potrebbero non avere un elemento HTML. Come dovremmo modellarli? Bene, questa situazione è molto più complessa per raggiungere il risultato, ma non è impossibile (puoi vedere alcuni pulsanti di WordPress predefiniti come "Aggiungi media"). Tuttavia, può ancora essere un problema, avvolgendo lo shortcode in un elemento HTML e poi lo styling come sopra. È abbastanza semplice, non del tutto perfetto però. In questo post, non ci concentreremo su questa complessa elaborazione.
Infine, i risultati che otteniamo sono mostrati come segue:
Quindi, sul front-end:
Anche il pulsante Messaggi recenti funziona bene:
Va bene, abbiamo coperto una pratica che è abbastanza semplice e facile da seguire. Potresti notare che il pulsante Messaggi recenti ti consente di regolare un'impostazione (il numero di post mostrati). Sicuramente sai che abbiamo usato il JavaScript predefinito, richiesta
, per raggiungere questo. Cosa succede se vuoi un popup più complesso, che ha molte impostazioni piuttosto che una sola? Bene, in un altro post ne discuteremo e proveremo un altro approccio.
Ogni commento su questo post sarà apprezzato. Grazie per la lettura, e ci vediamo dopo.
TinyMCE_Custom_Buttons