Cum se creează un plug-in adițional Packed pentru WordPress

Menținerea funcționalității separate de prezentare reprezintă o bună practică de dezvoltare a temelor WordPress. În acest post, veți învăța cum să faceți acest lucru, oferind utilizatorilor dvs. un plugin ambalat unic pentru temele dvs..

Tema Dezvoltare Logică

Am vândut teme WordPress pe ThemeForest timp de peste patru ani, iar în acest timp am învățat multe lucruri care ne-au ajutat să reușim pe piață. Unul dintre aspectele cheie ale dezvoltării temelor de succes este "logica corectă a dezvoltării temelor". 

Beneficiul principal al separării logicii de dezvoltare este viteza de producție: cu cât mai rapid puteți crea teme de calitate, cu atât mai mult venituri puteți genera. Păstrarea funcționalității într-un plugin separat este de asemenea utilă atunci când vine vorba de actualizări. Imaginați-vă că aveți zece teme pe ThemeForest și doriți să adăugați funcții noi ca o actualizare. Având toate funcționalitățile într-un singur plugin înseamnă că trebuie doar să îl actualizați o singură dată peste bord, altfel chiar și o mică actualizare devine lentă și potențial dureroasă.

Deci, dacă doriți să creați teme puternice și să câștigați mai mulți bani, respectați pluginul și sistemul tematic WordPress.

Tipuri de funcționalități

Ce fel de funcționalitate ar putea conține o temă premium? Ce fel de lucruri ar trebui să intrăm într-un plugin separat? Iată o listă a componentelor cheie pe care le păstrăm de obicei separate de fișierele de teme:

  • Tema opțiuni panou
  • Pagina / Mesaj extins câmpuri personalizate
  • Obiecte widget personalizate
  • Coduri scurte personalizate
  • Tipuri personalizate de postări
  • Funcții extra personalizate

În acest post nu vom detalia cum să creați componentele în sine, dar vom explica cum să le împachetați pe toate într-un plug-in addons. 

Sa incepem

Du-te la tine wp-content> plugin-uri și creați un dosar gol cu ​​numele pluginului dvs. ambalat. Vă recomandăm să utilizați un nume cu auto-explicație. De exemplu, plugin-ul nostru de addons se numește "ninzio-addons" (Ninzio fiind numele companiei noastre). 

Important: nu folosiți un subliniere în numele dosarului! Utilizați o bordură dacă este necesar.

Apoi, în acest dosar plugin creați un fișier php cu exact același nume ca dosarul dvs. În exemplul nostru, ar fi "ninzio-addons.php". Din nou, nu vă subliniați. Deschideți fișierul și adăugați următorul comentariu antetul DocBlock:

/ ** * Nume Plug-in: Numele plugin-ului * URI Plug-in: adresa URL a pluginului * Domeniul text: domain-text * Calea domeniului: / languages ​​/ * Descriere: Scurta descriere a pluginului * Autor: * URI autor: autor uri * /

Să examinăm detaliile pe care le-am adăugat aici: 

  • Numele pluginului: acesta ar trebui să fie scurt și descriptiv. 
  • Plugin URI: puteți să inserați adresa dvs. de site aici. 
  • Domeniul text: acesta este un parametru foarte important. Ar trebui să îl numiți în același mod ca și dosarul plugin și fișierul principal. Cu domeniul de text, tu și utilizatorii dvs. puteți traduce șiruri de pluginuri. Mai târziu ne vom uita la modul de traducere a unui plug-in plugin-uri ambalate (considerăm că acest lucru este foarte important pentru clienții noștri). 
  • Calea de domeniu: acest parametru este, de asemenea, foarte important pentru traducerea pluginului. Calea de domeniu este relativă la dosarul lingvistic. Du-te în dosarul plugin-ului Addons și crea un dosar gol cu ​​numele "languages". Acum lăsați-o goală; mai târziu vom crea fișierul de limbă. 
  • Toți ceilalți parametri "Autor", "Versiune", "URI autor" sunt în mod rezonabil explicativ.

Acum, după ce am creat folderul plug-in-uri pentru add-uri și fișierul principal, este timpul să configurați plugin-ul nostru.

configurație

În fișierul plugin principal, după comentariul antetului, inserați acest fragment:

dacă (! definit ('ABSPATH')) exit; // Ieșiți dacă este accesat direct

Aceasta este din motive de securitate; blochează accesul direct la fișierul plugin.

Imediat după aceea, adăugați acest cod:

funcția your_addons_load_plugin_textdomain () load_plugin_textdomain ('ninzio-addons', false, dirname (plugin_basename (__FILE__)). / languages ​​/ ');  add_action ('plugins_loaded', 'your_addons_load_plugin_textdomain');

Aici vom încărca textul plugin-ului nostru - asigurați-vă că numele funcției este corect. Recomandarea noastră pentru a numi funcții este de a folosi numele auto-descriptive cu un prefix al pluginului. De exemplu ninzio_addons. Și deoarece aceasta este o funcție php, putem folosi subliniere în loc de liniuțe. 

Asigurați-vă că sunteți exact la copierea sau tastarea funcției load_plugin_textdomain. Pentru parametrul de domeniu introduceți textul exact pe care l-am definit mai devreme. Și pentru parametrul calea relativă a plugin-ului introduceți calea spre folderul de limbi pe care l-am creat mai devreme.

Calea directorului de pluginuri

Să definim acum calea directorului pluginului; adăugați acest cod:

define ('your_addons', plugin_dir_path (__FILE__));

Aici folosim your_addons ca cale de director plugin. Până acum, bine; am creat plugin-ul nostru, acum este timpul să-l umplem cu funcții personalizate.

Tema Opțiuni Panel

Nu vom folosi acest pas pentru a acoperi cum să creați un panou de opțiuni pentru o temă - puteți crea unul personalizat sau puteți face așa cum facem; utilizați un cadru al opțiunilor tematice de pe raft. Dacă sunteți nou la cadrele de opțiuni, vă recomandăm să citiți articolele lui Bonang Salemane privind integrarea temei Redux:

  • Noțiuni de bază cu Redux Framework: Introducerea și integrarea în tema dvs.

    Cele mai bine concepute teme WordPress permit administratorilor site-ului să optimizeze anumite aspecte ale temei printr-o pagină de opțiuni. Procesul de creare a unei pagini de opțiuni ...
    Bonang Salemane
    WordPress

Pentru a adăuga un panou de opțiuni temă la add-on-uri, copiați folderul panelului de opțiuni, în întregime, în dosarul pluginului addons. Acum trebuie să solicităm mai multe fișiere pentru ao activa:

dacă (! class_exists ('ReduxFramework') && file_exists (your_addons. '/optionpanel/framework.php')) require_once ('optionpanel / framework.php');  dacă ! isset ($ redux_demo) && file_exists (your_addons. /optionpanel/config.php ')) require_once (' optionpanel / config.php '); 

În acest fragment de cod am solicitat două fișiere principale ale reduxframework: fișierul framework.php care gestionează funcția panoului de opțiuni și fișierul config, php, care este responsabil pentru configurațiile panoului opțional. Fișierele noastre de opțiuni sunt amplasate într-un director "opțional" plasat în interiorul dosarului plugin ninzio-addons. Terminat.

Funcții personalizate

E timpul să includem câteva funcții personalizate. Creați un fișier în dosarul plugin-urilor dvs. și numiți-l ca "addons-functons.php". Puneți toate funcțiile personalizate în acest fișier. 

Un lucru de urmărit este că utilizați convenții adecvate de numire a funcțiilor. Utilizați numele funcțiilor descriptive cu un prefix unic. De exemplu:

funcția your_addons_profile_social_links () ...

Imediat după fișierele cadru temă, solicitați fișierul de funcții personalizate:

require_once ('include / addons-functions.php');

Widgeturi personalizate

Și acum, includeți câteva widget-uri personalizate. Creați un dosar cu numele "widget-uri" în dosarul plugin-ului dvs. addons, puneți toate fișierele widget-uri personalizate în dosarul respectiv. Poziționarea filelor de widget-uri personalizate nu este critică aici, dar este recomandat să utilizați prefixe și liniuțe, nu subliniază.

De exemplu, fișierul widget personalizat Twitter se numește "ninzio-recent-tweets.php". De asemenea, widgetul nostru Mailchimp se numește "ninzio-mailchimp.php". Să le includem așa:

requ_once ('widgets / ninzio-recent-tweets.php'); requ_once ('widgets / ninzio-mailchimp.php');

Din nou, nu vom acoperi procesul actual de creare a widget-urilor personalizate; pentru asta, verificați postul lui Bonang Salemane:

  • Crearea propriilor dvs. widget-uri utilizând diferite API-uri WordPress: Introducere

    Widget-urile sunt un mod elegant de a oferi proprietarilor site-ului un anumit control asupra aspectului (și uneori a funcționalității) site-urilor lor WordPress. În această serie, mergem ...
    Bonang Salemane
    Widgeturi WordPress

Tipuri personalizate de posturi și taxonomii

Dacă doriți să adăugați un portofoliu sau evenimente sau ceva similar cu postările obișnuite ale WordPress, dar trebuie să fiți separat de temă, trebuie să utilizați tipuri personalizate de postări. Toate temele noastre au inclus tipuri personalizate de posturi. Crearea de tipuri personalizate de posturi poate fi complexă, deci încă o dată, care depășește domeniul de aplicare al acestui tutorial, dar vă recomandăm să citiți Tom McFarlin's:

  • Sfat rapid: tipuri de posturi, taxonomii și Permalinks

    Tipurile personalizate de posturi și taxonomiile sunt două caracteristici puternice ale WordPress. Din păcate, ele pot avea tendința de a provoca probleme dacă dezvoltatorii nu sunt ...
    Tom McFarlin
    WordPress

Pentru tipurile personalizate de posturi, trebuie să creați un dosar separat în plugin-ul dvs. de addons, de exemplu "ninzio-projects". Și în interiorul acelui dosar plasați toate fișierele care se referă la tipurile personalizate de postări. Cele mai importante fișiere de aici sunt fișierele principale care creează tipurile personalizate de posturi, fișierul unic de postare și fișierul post cu buclă / arhivă. Denumiți fișierul principal tip de postare personalizat așa cum ați numit dosarul personalizat de tip post, cum ar fi "ninzio-projects.php". Puneți codul personalizat al postului dvs. în interiorul acelui fișier, apoi pentru a activa tipul de post personalizat, va trebui să solicitați fișierul principal:

requ_once ('ninzio-projects / ninzio-projects.php');

Când separați astfel de funcții, trebuie să vă gândiți întotdeauna la clienții dvs. - mai precis, cum pot să extindă / rescriere fișierele șablon de tip personalizat (arhivă și single). Să presupunem că tipul de post tip personalizat este "proiecte". Un singur fișier personalizat post tip ar trebui să fie numit "single-projects.php", iar fișierul / arhiva ar trebui să fie numit "archive-projects.php". 

Și dacă tipul dvs. de post personalizat are, de asemenea, taxonomii personalizate, ar trebui să creați un fișier separat și pentru ei. Să numim fișierul nostru de taxonomie "taxonomy-projects.php". Deci acum avem trei fișiere:

single-projects.php arhivă-projects.php taxonomy-projects.php

Să le facem re-scriu. Adăugați aceste trei funcții în fișierul principal de aplicații:

funcția your_addons_projects_single_template ($ single_template) global $ post; dacă ($ post-> post_type == 'proiecte') if ($ theme_file = locate_template (array ('single-projects.php'))) $ single_template = $ theme_file;  altceva $ single_template = anunțurile tale. 'Proiecte / single-projects.php';  return $ single_template;  add_filter ("single_template", "your_addons_projects_single_template", 20);


funcția your_addons_projects_archive_template ($ archive_template) global $ post; dacă ($ post-> post_type == "proiecte") if ($ theme_file = locate_template (array ('arhive-projects.php'))) $ archive_template = $ theme_file;  altceva $ archive_template = adunările tale. 'Proiecte / Arhiva-projects.php';  întoarce $ archive_template;  add_filter ("archive_template", "your_addons_projects_archive_template", 20);


funcția your_addons_projects_taxonomy_template ($ taxonomy_template) if (is_tax ('projects-category')) if ($ theme_file = locate_template ('taxonomy-projects.php')) $ taxonomy_template = $ theme_file;  altceva $ taxonomy_template = anunțurile tale. 'Proiecte / taxonomie-projects.php';  return $ taxonomy_template;  add_filter ("taxonomy_template", "your_addons_projects_taxonomy_template", 20);

Schimbați numele acestor funcții pentru a avea un prefix unic. Principala logică aici este să încărcați fișierele șablon ale tipului de post personalizat după ce verificați dacă o copie a acestuia este prezentă în dosarul tematic. Când clientul dvs. copiază șablonul tip post post customizat în temă și îl extinde sau îl suprascrie, plug-in-ul dvs. de addons va încărca versiunea clientului dvs. pentru fișierul de tip personalizat. Deci, în această situație, fișierele de bază din plugin-ul Addons nu sunt schimbate, ele sunt simple extins de către clientul dvs. Orice actualizare viitoare a plug-in-ului dvs. de addons nu va șterge modificările personalizate ale clientului dvs..

Scripturi personalizate, stiluri și coduri scurte

Pentru scripturi și stiluri personalizate, vă recomandăm să creați foldere separate și să introduceți fișierele ca în fișierul "functions.php" al temei dvs..

Dacă intenționați să adăugați coduri scurte personalizate, va trebui să creați și să includeți fișierul cu coduri scurte în dosarul dvs. de addons. Creați un dosar cu numele "shortcodes" și în interiorul acelui director creați fișierul "yourprefix-shortcodes.php" (în cazul nostru: "ninzio-shortcodes.php"). În fișierul "-shortcodes.php" trebuie să introduceți codul de coduri scurte personalizate. 

După cum ați adunat până acum, nu vom folosi acest tutorial pentru a acoperi procesul de creare a codurilor scurte personalizate, dar vă recomandăm să citiți tutorialul lui Siddharth:

  • WordPress Shortcodes: Calea cea bună

    Unul dintre motivele principale pentru care WordPress este cea mai populară platformă CMS disponibilă este nivelul absolut de personalizare pe care îl aduce la masă. Astăzi,…
    Siddharth
    Dezvoltarea temelor

Să includeți fișierul nostru de coduri scurte personalizate:

requ_once ('shortcodes / ninzio-shortcodes.php');

Limbile

Aproape am terminat pluginul addons. După ce ați testat toate funcțiile personalizate, este timpul să creați fișierul lingvistic pentru a vă face pluginul translatabil. 

Mergeți la addons folder plugin> limbi. Utilizați software-ul PoEdit (PoEdit este o aplicație gratuită, disponibilă pentru Mac, Windows și Linux) pentru a genera fișierul de limbă. Din nou, fiți foarte corecți cu denumirea fișierului; fișierele care rezultă ar trebui să fie numite exact ca dosar plugin plugin. De exemplu, numele plugin-ului nostru este "ninzio-addons", fișierul de limbă ar trebui să fie "ninzio-addons.pot". Acesta este fișierul principal de limbă care conține toate șirurile din textul tău. Din acest fișier puteți crea alte fișiere lingvistice. 

Pentru a traduce fișierul dvs. de plugin plugin-uri:

  1. Porniți-l pe Poedit.
  2. La Poedit du-te la Fișier> Nou din fișierul POT / PO ...
  3. Selectați și deschideți fișierul din lista de limbi.
  4. Introduceți-vă numele, adresa de e-mail, limba și țara dvs. (de ex., Fr_FR Franceză, de_DE germană).
  5. Apasă pe Actualizați în interfața principală Poedit.
  6. Salvați fișierul numit "filename-xx_XX.po" cu "xx_XX" pentru limba și țara dvs..
  7. Asta e!

Concluzie

Acum, plugin-ul dvs. este gata, bine făcut! Am scos toate funcționalitățile necesare în afara fișierelor noastre de prezentare și am furnizat un plugin care poate fi actualizat pe mai multe teme. 

Sper să vă bucurați de urmărirea de-a lungul timpului, să nu uitați că puteți scoate proba pachetului de plugin-uri plug-in pe Github și să-l utilizați ca punct de plecare.