Probabil că știți că WordPress este asociat cu editorul HTML WYSIWYG, TinyMCE. Varietatea de caracteristici și capacitatea de a fi extinse prin pluginuri îl fac cel mai folosit editor WYSIWYG din lume. Cu toate acestea, WordPress nu utilizează toate caracteristicile sale. WordPress personalizează și păstrează doar părți care sunt într-adevăr utile pentru utilizatori, evitând dezordinea interfeței cu utilizatorul. Aceasta înseamnă, de asemenea, că unele funcții, de exemplu butoane, au fost ascunse de utilizatori. Puteți activa în totalitate butoanele MCE ascunse. De obicei, ele sunt stylesheet, Sub, cina butoane. Dacă chiar și cele ascunse încă nu satisfac nevoile dvs., atunci trebuie să creați un plugin TinyMCE pentru a adăuga propriul dvs.. În acest tutorial, vă voi trece prin elementele de bază ale adăugării butoanelor editorului WordPress, prin crearea unui plugin TinyMCE.
După cum am menționat mai devreme, vom crea un nou plugin TinyMCE a cărui sarcină este să adăugăm noile butoane pe care le dorim. Deci, care butoane vom adauga? Vom încerca să adăugăm două butoane simple: Dropcap și Postări recente, în care primul vă dă posibilitatea de a converti o literă selectată într-o scrisoare cu vârf de coborâre, iar aceasta din urmă va afișa postări recente. Codul generează aceste butoane afișate mai jos.
Să creați un nou dosar numit wptuts-editor-butoane (desigur, îl poți schimba la altceva dacă vrei) în directorul temei (folosind TwentyTweve). Continuați să creați două fișiere noi, wptuts.php care invocă PHP personalizat, iar celălalt numit wptuts-plugin.js unde vor fi localizate fragmentele de cod JavaScript. În cele din urmă, deschideți tema functions.php fișier și includeți noul creat wptuts.php fișier în el. Notă, rețineți că ați definit calea exactă:
cer ('wptuts-editor-buttons / wptuts.php');
Apoi trebuie să pregătim un cod pentru acele două butoane:
/ * Adăugați acest cod în stil.css * / .dropcap float: left; font-size: 80px; padding-right: 7px; linia-înălțime: 72px;
add_shortcode ("posturi recente", "wptuts_recent_posts"); funcția wptuts_recent_posts ($ atts) extract (shortcode_atts (array ('numere' => '5',) $ atts)); $ rposts = noul WP_Query (array ('posts_per_page' => $ numere, 'orderby' => 'date')); dacă ($ rposts-> have_posts ()) $ html = 'Postări recente
Presupunem că atunci când utilizatorii fac clic pe Postări recente , browserul va afișa un dialog care îi va cere numărul de postări pe care doresc să le arate. După ce are numărul respectiv, editorul îl va completa ca argument în codul scurt de mai sus. De exemplu, dacă dorim să afișăm șapte postări recente, codul scurt este generat după cum urmează:
[numere recente-posturi = "7" /]
Presupunând că avem deja pluginul nou, atunci trebuie să îl înregistrăm cu WordPress pentru al integra în editorul TinyMCE. Codul este prezentat mai jos:
add_action ('init', 'wptuts_buttons'); funcția wptuts_buttons () add_filter ("mce_external_plugins", "wptuts_add_buttons"); add_filter ('mce_buttons', 'wptuts_register_buttons'); funcția wptuts_add_buttons ($ plugin_array) $ plugin_array ['wptuts'] = get_template_directory_uri (). '/Wptuts-editor-buttons/wptuts-plugin.js'; retur $ plugin_array; funcția wptuts_register_buttons ($ butoane) array_push ($ butoane, 'dropcap', 'showrecent'); // dropcap ',' recentposts return $ butoane;
Cârligul important al filtrului mce_external_plugins
este folosit pentru a cupla noul plug-in la TinyMCE. Trebuie să transmitem un ID plugin (wptuts
) și URL-ul absolut care ne indică wptuts-plugin.js fişier. mce_buttons
cârligul este folosit pentru a spune editorului TinyMCE care butoane din pluginul nostru dorim să afișăm. dropcap și showrecent sunt valorile ID ale acestor butoane pe care intenționăm să le creăm. Țineți cont de aceste valori, acestea vor fi utilizate mai târziu.
În general, cred că cea mai bună modalitate de a extinde sau de a dezvolta ceva pe o platformă este să consultați documentația pentru acea platformă. TinyMCE are propriul wiki pe care îl puteți găsi util. Urmând un exemplu de cum se creează un plugin TinyMCE, avem următorul cod de inițializare:
(funcția () tinymce.create ('tinymce.plugins.wptuts', / ** * Inițializează plugin-ul, acesta va fi executat după crearea pluginului. * Acest apel este făcut înainte ca instanța editorului să fi terminat inițializarea astfel încât să folosiți evenimentul onInit * al instanței editorului pentru a intercepta acel eveniment. * * @param tinymce.Editor ed Editorul instanței că pluginul este inițializat în. * @param string url URL absolut în locul unde este localizat pluginul. * / init: function (ed, url) , / ** * Creeaza instante de control bazate pe numele incoming.Aceasta metoda nu este in mod normal necesara deoarece metoda addButton a clasei tinymce.Editor este o modalitate mai usoara de a adauga * * @ @ param String n Numele controlului de creat. * @param tinymce.ControlManager cm Manager de control pentru a folosi inorder pentru a crea un control nou. * @return tinymce.ui.Control New control inst ance sau null dacă nu a fost creat niciun control. * / createControl: funcția (n, cm) return null; , / ** * Returnează informații despre plugin ca nume / valoare matrice. * Cheile curente sunt numele de nume, autorul, autorul, infoula și versiunea. * * @return Object Nume / valoare matrice conținând informații despre plugin. * / getInfo: function () retur nume lung: 'Wptuts Buttons', autor: 'Lee', authorurl: 'http://wp.tutsplus.com/author/leepham', infourl: 'http: // wiki. moxiecode.com/index.php/TinyMCE:Plugins/example ", versiunea:" 0.1 "; ); // Înregistrează pluginul tinymce.PluginManager.add ('wptuts', tinymce.plugins.Wptuts); ) ();
Nu uitați să adăugați acest cod în wptuts-plugin.js fişier. Am lăsat comentariile codului pentru a înțelege cu ușurință ce se întâmplă. Codul de mai sus are doar două sarcini principale:
crea
metodă. Comportamentul pluginului nostru va fi definit în init
și createControl
funcții. Puteți vedea că informațiile pluginului sunt declarate în obtine informatii
funcția de asemenea. Pluginul nostru va avea numele Wptuts
și ID-ul wptuts
după cum puteți vedea.În init
funcția, începem să creăm butoanele noastre. Codul văzut după cum urmează:
(funcția () tinymce.create ('tinymce.plugins.wptuts', init: function (ed, url) ed.addButton ('dropcap' url + '/dropcap.jpg'); ed.addButton ('showrecent', title: 'Adăugați ultimele postări shortcode', cmd: 'showrecent', imagine: url + '/recent.jpg') // ... Cod ascuns); // Inregistreaza pluginul tinymce.PluginManager.add ('wptuts', tinymce.plugins.Wptuts);) ();
Prin utilizarea funcției addButton
metodă a ed
obiect, îi spunem editorului curent că vrem să creăm toate aceste butoane. Această metodă acceptă două argumente:
cmd
proprietate, are valoarea lui showrecent. Aceasta este ID-ul comenzii care este executat de fiecare dată când este chemat, vom trece în detaliu în scurt timpimagine
de valoare.Acum, verificați editorul WordPress și vom vedea că apare butoanele noastre. Cu toate acestea, ei nu fac nimic acum.
Am definit numele comenzilor pe care butoanele noastre le vor executa, dar nu au definit încă ce vor executa. În acest pas, vom seta lucrurile pe care le vor face butoanele noastre. În interiorul init
funcția, continuați să adăugați acest cod după cum se arată:
(funcția () tinymce.create ('tinymce.plugins.wptuts', init: function (ed, url) ed.addButton ('dropcap' url + '/dropcap.jpg'); ed.addButton ('showrecent', title: 'Adăugați posturi recente shortcode', cmd: 'showrecent', imagine: url + '/recent.jpg'); addCommand ('dropcap', funcția () var select_text = ed.selection.getContent (); var return_text = "; return_text = ''+ select_text +'„; ed.execCommand ('mceInsertContent', 0, return_text); ); ed.addCommand ('showrecent', function () var numărul = prompt ("Câte postări doriți să afișați?"), shortcode; > 0 && număr <= 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 ); )();
Acum ed.addCommand
metoda ne va ajuta să adăugăm o comandă nouă. Trebuie să treci ID-ul comenzii și funcția de apel invers care va fi executată dacă a fost apelată de către ed.execCommand
metodă. Rețineți că ed reprezintă tinyMCE.activeEditor
obiect. Să aruncăm o privire la funcțiile de apel invers:
dropcap
comandă, dorința dorită este când un utilizator selectează o literă și dă clic pe DropCap butonul va fi apoi transformat în formularul cu picătură. Deci, cum obținem acea scrisoare? Ei bine, ed.selection.getContent
metoda va face asta pentru noi. Apoi, odată ce am primit scrisoarea, o înfășurăm într-un deschidere
element. Nu uitați să setați valoarea de clasă a acestui element dropcap pe care am definit-o inainte, nu? În cele din urmă, avem textul complet care trebuie inserat înapoi în editor. TinyMCE are o comandă implicită cu numele mceInsertContent
care se utilizează pentru a insera un anumit conținut în editor, modul de utilizare a acestuia este prezentat mai sus. Conținutul va fi trecut ca al treilea argument al mceInsertContent
metodă.În loc să adăugați text pur atunci când butoanele inserați conținutul în editorul vizual, putem să îl facem mult mai vizibil prin înregistrarea CSS personalizată pentru butoanele noastre. Depinde de tipul de date de conținut și puteți alege un stil adecvat. De exemplu, ale noastre Dropcappoate avea acelasi stil ca cel prezentat pe front-end. Deci, puteți lua codul său CSS chiar în partea de sus a acestui post, apoi puneți-l în Editor-style.css fișier (pentru implicit, a se vedea add_editor_style
pentru detașare).
Pentru codurile scurte, s-ar putea să nu aibă ele însele un element HTML. Cum ar trebui să le formăm? Ei bine, această situație este mult mai complexă pentru a obține rezultatul, dar nu este imposibil deși (puteți vedea unele butoane WordPress implicite, cum ar fi "Adăugați mass-media"). Cu toate acestea, poate fi încă dificil, prin împachetarea acelui cod scurt într-un element HTML și apoi prin styling-ul acelui element la fel ca mai sus. E destul de simplu, nu chiar perfect. În acest post, nu ne vom concentra pe prelucrarea complexă.
În cele din urmă, rezultatele obținute sunt afișate după cum urmează:
Apoi, pe front-end:
Iar butonul Mesaje recente funcționează bine:
Bine, am acoperit o practică care este destul de simplă și ușor de urmărit. S-ar putea să observați că butonul Mesaje recente vă permite să ajustați o setare (numărul de postări care se vor afișa). Cu siguranță știți că am folosit JavaScript-ul implicit, prompt
, pentru a realiza acest lucru. Ce se întâmplă dacă doriți un popup mai complex, care are mai multe setări decât unul singur? Ei bine, într-un alt post vom discuta acest lucru și vom încerca o altă abordare.
Orice feedback despre acest post va fi apreciat. Vă mulțumim pentru lectură și vă vom vedea mai târziu.
TinyMCE_Custom_Buttons