Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Programmare ad Oggetti con WordPress : Costruire il Plugin I

by
Length:MediumLanguages:
This post is part of a series called Object-Oriented Programming in WordPress.
Object-Oriented Programming in WordPress: Scope
Object-Oriented Programming in WordPress: Building the Plugin II

Italian (Italiano) translation by Piergiorgio Sansone (you can also view the original English article)

A questo punto della serie, siamo finalmente in grado di inizare a sviluppare il nostro plugin utilizzando la tecnica della programmazione ad oggetti, che abbiamo studiato sino ad ora nella serie.

Se vi siete uniti a noi solo adesso, vi consiglio caldamente di leggere quanto abbiamo fatto sin ora, contrariamente correrete il rischio di perdere qualche punto chiave che andremo a spiegare di seguito nei prossimi articoli nella realizzazione del nostro plugin.

  1. L'Introduzione
  2. Le Classi
  3. I Types
  4. Le Strutture di Controllo : Istruzioni Condizionali
  5. Le Strutture di Controllo : I Cicli
  6. Funzioni ed Attributi
  7. L' Ambito di applicazione (scopo)

Bene, detto questo, è arrivato il momento di scrivere un pò di codice. Prima di incominciare, è importante capire che sviluppare un plugin , o qualsiasi altro componente software con questo scopo , richiede un gran numero di passaggi, sebbene andremo a scrivere un pò di codice proprio con questo articolo, non ci sarà l'aggiunta di un sacco di funzionalità , fino a che non avremo terminato l'impalcatura o le fondamenta del nostro plugin.

Premesso questo, è necessario rammentare alcune cose fondamentali :

  1. Definire le caratteristiche del plugin che stiamo per scriviere,
  2. Condividere tutto ciò che non possiamo sviluppare in questa prima versione,
  3. Discutere l'architettura e l'organizzazione dei file che compongono il plugin.

Quindi occupiamoci velocemente di questi punti , e poi entriamo nel dettaglio del plugin.

Post Meta Viewer

Nel corso dei prossimi articoli, realizzeremo un plugin che introduce un post meta box nella vista del post editor in modo che visualizzi tutti meta data associati con il post corrente.

1. Le Caratteristiche

Il plugin sarà in sola lettura in quanto è possibile visualizzare solo i meta dati associati con il plugin. Non vogliamo consentirgli di creare nuovi meta data , almeno non in questa fase iniziale.

Un’altra caratteristica è che visualizzi in un formato chiaro ed organizzato ciò che è facilmente identificabile con la chiave ed un valore associato al Post ID. Realizzeremo anche un’ ancora che ci consentirà di copiare una linea di codice che permette di richiamare una parte dell’informazione nel form get_post_meta($post_id,$meta_key, $meta_value );.

2. Una versione 1.0 robusta

Prima di andare oltre, ci sono un sacco di caratteristiche interessanti che potremmo attuare in questo plugin.

Possiamo introdurre le seguenti abilità :

  • inserire un nuovo Custom post meta data
  • aggiurnare un post meta data esistente
  • cancellare un post meta data esistente
  • ordinare le colonne per la chiave
  • ordinare le colonne per valore
  • .... e oltre

Ma in linea con la filosofia di realizzare una "verisione 1.0 robusta",abbiamo intenzione di realizzare una struttura snella,focalizzata su un cardine su cui possiamo continuare a produrre plugin in base alle necessità, anche dopo questa serie.

Forse alcune delle funzionalità accennate in precedenza le tratteremo prima della fine della serie, forse vorrete inserire il vostro set di funzionalità. In entrambe i casi va bene. La linea di fondo è che stiamo andando a sviluppare un nocciolo duro, sul quale possiamo continuare ad iterare per espandere le funzionalità.

3. L' Architettura e l'Organizzaizione dei file

Quindi, premesso questo, la prima cosa da fare è parlare dei punti principali del plugin, successivamente daremo un occhiata a come organizzeremo i files ed i componenti del plugin.

  • il plugin richiede un file di base con la funzione di boot loader (o file bootstrap) per registrarsi su WordPress e per attivare i componenti del plugin,
  • Il plugin necessità di una classe che coordini gli hooks e le callback utilizzate in tutto il plugin. Questo aiuterà  a disaccoppiare le funzionalità  dagli hooks  e le classi responsabili in realtà della visualizzazione del lavoro che ci permettono di fare in modo che ciascuna delle  nostre classi siano specializzate ed idealmente eseguano un unico lavoro.
  • Il plugin avrà bisogno di una classe che avrà il compito di visualizzare le informazioni nel post su un  singolo dashboard che effettivamente visualizza il meta box.
  •  Avremo bisogno di una Classe plugin principale che registrerà tutte le dipendenze e fornirà tutte le informazioni sulla versione del plugin , inoltre è conscio del caricatore e la funzionalità di amministrazione, al fine di registrare le informazioni tra i due componenti.
  • Infine ,avremo bisogno di alcuni fogli di stile che consentano la visualizzazione delleinformazioni anche senza dashboard.

Suona confuso? Speriamo di vedere e dare un’occhiata alla struttura dei file  e il codice di base, sarà da esempio vi aiuterà e tutto questo avrà più senso.

Detto questo, diamo uno sguardo da un livello più alto ai componenti che interagiscono tra di loro, poi daremo uno sguardo a come saranno organizzati i files. Dopodicchè, abbozzeremo il codice del plugin che staremo compilando nel prossimo articolo.  

I Componenti del plugin

Nello specifico, il plugin sarà composto  dai seguenti componenti – o file- che costituiranno i sorgenti del plugin. Dopo aver dato un occhiata alla lista dei file , vedremo come tutti i pezzi interagiranno tra di loro .

  • single-post-meta-manager.php. E’il file principale, registra il plugin su Wordpress e mette in moto tutto.
  • class-single-post-meta-manager-admin.php.E’ il file responsabile della registrazione e l’accodamento dei fogli di stile cosi come della visualizzazione degli elementi dell’interfaccia utente che conterranno i post meta data .
  • single-post-meta-manager-admin.css. E’ il foglio di stile che formatterà l’interfaccia utente.
  • class-single-post-meta-manager-loader.php.E’il file che coordinerà le azioni ed i filtri tra il nucleodel plugin e la classe di amministraizione.
  • class-single-post-meta-manager.php. E’ il file, nucleo del plugin che mantiene le informazioni sulla versione plug-in, informazioni plug-slug, i riferimenti al caricatore, e il file in cui istruiamo il caricatore cui oggetti e funzioni sono responsabili per la visualizzazione dell'interfaccia utente amministrativo.
  • README.md.Fornisce le solite istruzioni circa il funzionamento iniziale del plugin.
  • CHANGES.md Fornice la lista delle modifiche apportate al plugin nelle varie versioni realizzate.

In base al vostro livello di esperienza nella programmazione ad oggetti,questo potrebbe sembrare o meno un numero elevato di files, per un insieme di funzionalità relativamente semplice. Tuttavia ce ne sono ancora di più. Non abbiamo alcuna intenzione di eliminare tutti questi files dalla cartella di root del plugin.

Invece, faremo un ulteriore passo avanti ed organizzeremo le cose in directory appropriate. Una volta recensiti,daremo uno sguardo all'organizzazione dei componenti sottoforma di diagramma, e poi esamineremo il codice che prevede l'impalcatura del plugin.

Organizzazione dei file

L'organizzazione dei file è relativamente semplice, probabilmente il modo migliore per spiegarla è attraverso un immagine:

Per essere chiari, di seguito vi mostriamo il dettaglio di quanto mostrato nell'immagine precedente.

  • admin/class-single-post-meta-manager-admin.php
  • admin/css/single-post-meta-manager.admin.css
  • includes/class-single-post-meta-manager-loader.php
  • includes/class-single-post-meta-manager.php
  • languages/
  • single-post-meta-manager.php
  • CHANGES.md
  • README.md
  • LICENSE.txt

Questo è importante da riconoscere e ci sono un paio di punti nel codice dove registreremo le dipendenze ed è importante sapere dove sono, in modo da poter fornire loro i percorsi corretti.

Costruiamo Il Plugin

A questo punto, siamo pronti ad abbozzare le classi che utilizzeremo. Ci sono diverse cose importati da evidenziare nel codice che state per vedere:

  • Stiamo solo abbozzando le classi ed i metodi, in questo articolo non introdurremo nessuna funzionalità.
  • Prima del termine della implementazione, il plugin dovrebbe apparire sulla dashboard di Wordpress e potrà essere attivato (sebbene nulla accadrà realmente).
  • Nonostante il fatto che creda che la documentazione sia essenziale,per uno sviluppo di qualità, non ci dilungheremo nei commenti in questo articolo, perchè dobbiamo arrivare ad un compromesso: Questo articolo può diventare eccessivamente lungo con una straordinaria quantità di dettagli o possiamo continuare a prendere ciascun aspetto di questa serie passo-passo. Personalmente scelgo la seconda in modo tale da non essere sopraffatti da una elevata mole di informazioni.

Ciò premesso, se avete domande circa il codice, sentitevi liberi di lasciare i vostri commenti in merito; Tuttavia, posso dire attendete fino al prossimo articolo per le risposte.

Adesso andiamo al codice.

Core Plugin File

Il file principale del plugin è responsabile della registrazione del plugin su WordPress, ed alla fine è responsabile dell'importazione delle classi principali del plugin (che esamineremo tra poco), e della configurazione del plugin attivato.

Notate l'espressione condizionale presente alla fine del file. Questa fa si che l'accesso diretto al plugin sia inibito al web browser.

Files di amministrazione

Tutti questi files risiedono nella directory admin come indicato sopra.

The Single Post Meta Manager Admin Class

Questa classe interroga il foglio di stile e visualizza il meta box utilizzato per visualizzare il post.

Notate che, in questa classe c'è un singolo attributo del plugin protected per la variabile $version . Questo attributo è configurato nel costruttore della classe.

Piu tardi nel codice vedremo come questo li lega insieme.

The Single Post Meta Manager Stylesheet

Al momento per questo file in particolare non abbiamo del codice da visualizzare; Tuttavia, andiamo avanti e aggiungiamolo nella sottodirectory admin/css come se fosse quello che eventualmente utilizzeremo per lo stile della Dashboard.

Includes

Questi sono i file principali del plugin, sono responsabili per il coordinamento delle informazioni tra i diversi hooks e l'area di amministrazione del plugin.

Single Post Meta Manager Loader

Questa classe verrà utilizzata come classe primaria del plugin per coordinare tutti gli hooks esistenti nel plugin e la classe di amministrazione che abbiamo visto sopra.

Notate che nella classe in alto abbiamo indicato gli attributi come protected Questo viene fatto in modo che questa classe abbia accesso ai suoi attributi, ma non le altre classi.

Inoltre , ci siamo superati e abbiamo fatto questo solo nel caso in cui questa particolare classe divenisse una sottoclasse in una futura iterazione del plugin.

Single Post Meta Manager

Infine, la classe primaria del plugin è responsabile del caricamento delle dipendenze, l'impostazione della localizzazione, il coordinamento degli hooks.

Nota che nel codice sopra, abbiamo in aggiunta altri attributi protected , un paio di funzioni private e una funzione public utilizzata

Nel prossimo articolo ci soffermeremo a lungo su questa classe essendo questo il punto di ingresso di molte funzionalità.

In arrivo

In questo articolo abbiamo trattato moltissime informazioni , ma ovviamente c’è ancora molto altro da dire. Oltre a fornire la documentazione per le nostre funzioni, dobbiamo  implementare  concretamente le funzionalità  per renderle operative

Nel prossimo articolo della serie, faremo  proprio questo, dopo di che ci rivolgeremo  la nostra attenzione a documentare il codice.

Come indicato in precedenza, sentitevi liberi di lasciare domande e/o commenti circa il codice visto nell'articolo. Per quelli che fossero interessati, potete sempre verificare lo stato del progetto su GitHub.

Fino al prossimo articolo!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.