Mentre continui a scrivere per WordPress sempre di più, il livello di difficoltà e complessità dei tuoi plug-in finirà per andare ben oltre la semplice manipolazione dei dati di back-end, come dimostrato nell'articolo del nostro principiante. In questa puntata tratteremo in modo approfondito: interazione con il database, widget amministrativi e widget della sidebar. L'esempio di oggi sarà un plug-in personalizzato "Most Popular by Views", che crea un widget per l'area di amministrazione da visualizzare e un widget per la barra laterale che i visitatori possono vedere.
Prima di aprire il nostro IDE o scrivere qualsiasi codice, dovresti sempre scrivere un elenco delle funzionalità che il tuo plugin avrà e non avrà (almeno nella sua fase iniziale, puoi sempre estenderlo più tardi). Per il nostro plugin, "Più popolari per visualizzazioni", la nostra funzione principale è visualizzare un elenco dei post più popolari (diremo, top 10). In secondo luogo, inseriremo anche l'elenco nell'area di amministrazione come una sorta di analisi low-tech. Infine, daremo agli sviluppatori la possibilità di visualizzarlo ovunque rendendolo disponibile come widget della barra laterale e tramite una semplice funzione.
Prima di poter visualizzare i post più popolari, abbiamo bisogno di raccogliere dati su quali post vengono visualizzati e con quale frequenza, ma anche prima di poterlo fare, abbiamo bisogno di un posto dove mettere tutti quei dati. All'interno di un nuovo file di plugin, creiamo una nuova funzione (ppbv_create_table) che verificherà se il nostro tavolo esiste. In caso contrario, lo creeremo. Il nostro metodo per farlo è piuttosto semplice; utilizzeremo $ wpdb-> get_results per eseguire un'istruzione SQL che controlla una tabella denominata "wp_popular_by_views". Se non trova la tabella, get_results restituirà null. In questo caso, utilizzeremo $ wpdb-> query per scrivere nella nuova tabella. Eseguiamo questa funzione ogni volta che viene attivato il plugin.
prefix.'popular_by_views'; // combina il prefisso con la nostra funzione tablename ppbv_create_table () global $ wpdb, $ ppbv_tablename; // chiama global così possiamo usarli all'interno della funzione $ ppbv_table = $ wpdb-> get_results ("MOSTRA TAVOLI LIKE '$ ppbv_tablename'", ARRAY_N); // restituisce null se nessun risultato se (is_null ($ ppbv_table)) // se non abbiamo una tabella $ create_table_sql = "CREATE TABLE $ ppbv_tablename (id BIGINT (50) NOT NULL AUTO_INCREMENT, post_id VARCHAR (255 ) NOT NULL, visualizza BIGINT (50) NOT NULL, PRIMARY KEY (id), UNIQUE (id)); "; // fai attenzione con la sintassi SQL, può essere MOLTO finiky $ wpdb-> query ($ create_table_sql); // esegue l'istruzione SQL sul database register_activation_hook (__ FILE __, 'ppbv_create_table'); // esegue la funzione 'ppbv_create_table' all'attivazione del plug-in?>
La prossima cosa che dobbiamo fare, ora che abbiamo una tabella per archiviare i nostri dati, è catturare i nostri dati. Creeremo una nuova funzione (ppbv_page_viewed) che assegneremo al wp_head gancio in modo che venga eseguito su ogni caricamento della pagina. All'interno di questa funzione, faremo una delle due cose, dopo aver controllato se la pagina corrente è già nel database: aumentare le sue visualizzazioni di una o, se non è nel database, aggiungerla al database. Per capire se la pagina corrente è già nel database, useremo il $ postale oggetto per ottenere il "post_ID". Questo passaggio è in realtà molto semplice, perché non stiamo raccogliendo dati complicati; i commenti nel codice forniscono un dettaglio passo dopo passo in questo processo.
function ppbv_page_viewed () if (is_single () &&! is_page ()) // Esegui solo sui post e non sulle pagine globali $ wpdb, $ post, $ ppbv_tablename; // chiama global per l'uso in funciton $ wpdb-> flush (); // Clense l'interfaccia DB $ data = $ wpdb-> get_row ("SELECT * FROM $ ppbv_tablename WHERE post_id =" $ post-> ID "", ARRAY_A); // ottiene la riga di dati che ha l'ID post corrispondente se (! is_null ($ data)) // se abbiamo una riga di dati corrispondente $ new_views = $ data ['views'] + 1; // aumenta le visualizzazioni di 1 $ wpdb-> query ("UPDATE $ ppbv_tablename SET views =" $ new_views "WHERE post_id =" $ post-> ID ";"); // aggiorna la riga di dati con le nuove viste $ wpdb-> flush (); // Clense l'interfaccia DB else // se non abbiamo una riga di dati corrispondente (nessuno ha ancora visualizzato il post) $ wpdb-> query ("INSERT INTO $ ppbv_tablename (post_id, views) VALUES (' $ post-> ID', '1'); "); // aggiungi una nuova riga di dati nel DB con l'ID post e 1 visualizza $ wpdb-> flush (); // Clense l'interfaccia DB add_action ('wp_head', 'ppbv_page_viewed'); // collega ppbv_page_viewed al hook wp_head
In seguito, utilizzeremo questi dati che abbiamo appena aggiunto al nostro database per creare un elenco ordinato all'interno di un widget Dashboard di Area amministrativa. Questo processo implica due funzioni: la prima (ppbv_admin_widget) per generare tutto all'interno del widget e in secondo luogo (ppbv_add_admin_widget) per creare il widget stesso. Iniziamo con la funzione content, pppbv_admin_widget. Innanzitutto, dal momento che stiamo creando una lista ordinata, facciamo eco ai tag di apertura per questo. Quindi globalizzeremo i $ wpdb e $ ppbv_tablename vars in modo che possiamo accedere al database e recuperare i dieci ID dei post più visti. Quindi eseguiremo l'array restituito attraverso a per ciascuno dichiarazione, e utilizzare ogni singolo ID per creare un elemento di elenco e creare un collegamento a quella pagina mentre stampa anche le sue viste (formattato con number_format per renderlo più facile da leggere).
function ppbv_admin_widget () echo ""; // crea un elenco non ordinato globale $ wpdb, $ ppbv_tablename; // chiama global per l'uso nella funzione $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); // Ordina la nostra tabella dal più grande al più piccolo, quindi ottieni il primo 10 (ovvero il 10 più visualizzato) foreach ($ popolare come $ post) // loop attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare alcuni caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: 12543 a 12.543) $ post_url = get_permalink ($ ID); // ottiene l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi la lista non ordinata- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo"
Ora che stiamo generando contenuti, creiamo il widget. All'interno della funzione di creazione, ppbv_add_admin_widget, chiameremo un'altra funzione nativa per WordPress: wp_add_dashboard_widget. Tutto quello che dobbiamo fare è dare a wp_add_dashboard_widget i seguenti parametri: [id del contenitore], [titolo nel contenitore], [funzione contenuto] (il nostro riempie come tale: 'popular_by_views', 'Messaggi più popolari per viste', 'ppbv_admin_widget '). L'ultima cosa che dobbiamo fare è collegare la nostra funzione di creazione al gancio wp_dashboard_setup.
function ppbv_add_admin_widget () wp_add_dashboard_widget ('popular_by_views', 'Messaggi più popolari per viste', 'ppbv_admin_widget'); // crea un widget per l'area admin || wp_add_dashboard_widget ([id di div], [title in div], [funzione da eseguire all'interno di div]) add_action ('wp_dashboard_setup', 'ppbv_add_admin_widget'); // collega ppbv_add_admin_widget a wp_dashboard_setup
E ora abbiamo un widget di dashboard funzionante per gli amministratori da vedere.
Creare un widget barra laterale è abbastanza indolore; sfortunatamente, alcune parti non sono ben documentate (come il modo di renderle uniformi), ma lo copriremo. Iniziamo scrivendo una nuova funzione (ppbv_display_widgete, al suo interno, copieremo la nostra funzione di contenuto dal widget di amministrazione (suggerisco di spostare le chiamate globali verso l'alto, al di fuori del
function ppbv_display_widget () global $ wpdb, $ ppbv_tablename; // chiama global per l'uso nella funzione echo ""; // crea un eco contenitore""; // chiudi il contenitore wp_register_sidebar_widget ('popular_by_views', 'Messaggi più popolari per viste', 'ppbv_display_widget'); // aggiungi il widget al menu di selezione || wp_register_sidebar_widget ([id dell'opzione], [title of l'opzione], [funzione da eseguire dal widget]))Più popolare per visualizzazioni
"; // scrivi il titolo echo""; // crea una lista ordinata $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popolare come $ post) // loop attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare alcuni caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: da 12543 a 12,543) $ post_url = get_permalink ($ ID); // ottiene l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi l'elenco ordinato echo"- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo"
Questo è in realtà il minimo indispensabile da fare per un widget della barra laterale, ma il 90% di tutte le barre laterali dinamiche hanno determinate impostazioni applicate a come i widget sono stilizzati, quindi adattiamo il nostro widget a tali impostazioni. La prima cosa che dobbiamo fare è aggiungere un parametro alla nostra funzione ppbv_display_widget, $ args. Aggiungendo questo parametro all'interno della funzione, utilizzando la funzione di estrazione su di esso, otteniamo l'accesso a diverse variabili che consentiranno al nostro plugin di essere stilizzato come il resto dei widget nella barra laterale.
"Non abbiamo bisogno di fornire alcun input per $ args, WordPress lo farà per noi."
Grazie a $ args ed estrai, ora abbiamo accesso alle seguenti variabili che possiamo echo per lo stile del nostro widget:
function ppbv_display_widget ($ args) global $ wpdb, $ ppbv_tablename; // chiama global per l'uso in function extract ($ args); // ci fornisce le impostazioni predefinite dei widget echo $ before_widget; // echos il contenitore per il widget || ottenuto da $ args echo $ before_title. "Più popolare per visualizzazioni". $ after_title; // echos il titolo del widget || $ before_title / $ after_title ottenuto da $ args echo ""; // crea una lista ordinata $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); // Ordina la nostra tabella dalla più grande alla più piccola, quindi ottieni il primo 10 (ovvero il 10 più visualizzato) foreach ($ popolare come $ post) // esegue il ciclo attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare un pochi caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: da 12543 a 12,543) $ post_url = get_permalink ($ ID); // get l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi la lista ordinata echo $ after_widget; // chiudi il contenitore || ottenuto da $ args- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo"
Non tutti quelli che usano questo plugin vorranno utilizzare il widget, quindi è imperativo che forniamo loro un altro metodo per visualizzare la nostra lista. Per fortuna, è semplice come clonare la nostra funzione ppbv_display_widget e rimuovere le parti del widget, sostituendole con HTML standard codificato.
function ppbv_display () global $ wpdb, $ ppbv_tablename; // chiama global per l'uso nella funzione echo ""; // crea un eco contenitore""; // chiudi il contenitorePiù popolare per visualizzazioni
"; // scrivi il titolo echo""; // crea una lista ordinata $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popolare come $ post) // loop attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare alcuni caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: da 12543 a 12,543) $ post_url = get_permalink ($ ID); // ottiene l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi l'elenco ordinato echo"- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo"
Ragazzi, avete creato il vostro plugin WordPress "Most Popular by Views". Non troppo difficile, vero??
Quando hai imparato l'arte dello sviluppo di plugin per WordPress, fermati su CodeCanyon.net e inizia a vendere i tuoi plug-in a scopo di lucro!
prefix.'popular_by_views'; // combina il prefisso con la nostra funzione tablename ppbv_create_table () global $ wpdb, $ ppbv_tablename; // chiama global così possiamo usarli all'interno della funzione $ ppbv_table = $ wpdb-> get_results ("MOSTRA TAVOLI LIKE '$ ppbv_tablename'", ARRAY_N); // restituisce null se nessun risultato se (is_null ($ ppbv_table)) // se non abbiamo una tabella $ create_table_sql = "CREATE TABLE $ ppbv_tablename (id BIGINT (50) NOT NULL AUTO_INCREMENT, post_id VARCHAR (255 ) NOT NULL, visualizza BIGINT (50) NOT NULL, PRIMARY KEY (id), UNIQUE (id)); "; // fai attenzione con la sintassi SQL, può essere MOLTO finiky $ wpdb-> query ($ create_table_sql); // esegue l'istruzione SQL sul database $ wpdb-> flush (); // Clense l'interfaccia DB register_activation_hook (__ FILE __, 'ppbv_create_table'); // esegue la funzione 'ppbv_create_table' alla funzione di attivazione del plugin ppbv_page_viewed () if (is_single () &&! is_page ()) // Esegui solo sui post e non sulle pagine globali $ wpdb, $ post, $ ppbv_tablename; // chiama global per l'uso in funciton $ wpdb-> flush (); // Clense l'interfaccia DB $ data = $ wpdb-> get_row ("SELECT * FROM $ ppbv_tablename WHERE post_id =" $ post-> ID "", ARRAY_A); // ottiene la riga di dati che ha l'ID post corrispondente se (! is_null ($ data)) // se abbiamo una riga di dati corrispondente $ new_views = $ data ['views'] + 1; // aumenta le visualizzazioni di 1 $ wpdb-> query ("UPDATE $ ppbv_tablename SET views =" $ new_views "WHERE post_id =" $ post-> ID ";"); // aggiorna la riga di dati con le nuove viste $ wpdb-> flush (); // Clense l'interfaccia DB else // se non abbiamo una riga di dati corrispondente (nessuno ha ancora visualizzato il post) $ wpdb-> query ("INSERT INTO $ ppbv_tablename (post_id, views) VALUES (' $ post-> ID', '1'); "); // aggiungi una nuova riga di dati nel DB con l'ID post e 1 visualizza $ wpdb-> flush (); // Clense l'interfaccia DB add_action ('wp_head', 'ppbv_page_viewed'); // collega ppbv_page_viewed alla funzione di hook wp_head ppbv_admin_widget () echo ""; // crea un elenco non ordinato globale $ wpdb, $ ppbv_tablename; // chiama global per l'uso nella funzione $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); // Ordina la nostra tabella dal più grande al più piccolo, quindi ottieni il primo 10 (ovvero il 10 più visualizzato) foreach ($ popolare come $ post) // loop attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare alcuni caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: 12543 a 12.543) $ post_url = get_permalink ($ ID); // ottiene l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi la lista non ordinata function ppbv_add_admin_widget () wp_add_dashboard_widget ('popular_by_views', 'Messaggi più popolari per viste', 'ppbv_admin_widget'); // crea un widget per l'area admin || wp_add_dashboard_widget ([id di div] , [title in div], [funzione da eseguire all'interno di div]) add_action ('wp_dashboard_setup', 'ppbv_add_admin_widget'); // collega ppbv_add_admin_widget alla funzione wp_dashboard_setup ppbv_display_widget ($ args) global $ wpdb, $ ppbv_tablename; // chiama global da usare nella funzione extract ($ args); // ci fornisce le impostazioni predefinite dei widget echo $ before_widget; // echos il contenitore per il widget || ottenuto da $ args echo $ before_title. "Most Popular by Views". $ after_title; // echos il titolo del widget || $ before_title / $ after_title ottenuto da $ args echo "- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo""; // crea una lista ordinata $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); // Ordina la nostra tabella dalla più grande alla più piccola, quindi ottieni il primo 10 (ovvero il 10 più visualizzato) foreach ($ popolare come $ post) // esegue il ciclo attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare un pochi caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: da 12543 a 12,543) $ post_url = get_permalink ($ ID); // get l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi la lista ordinata echo $ after_widget; // chiudi il contenitore || ottenuto da $ args wp_register_sidebar_widget ('popular_by_views', 'Messaggi più popolari per viste', 'ppbv_display_widget'); // aggiungi il widget al seleziona menu || wp_register_sidebar_widget ([id dell'opzione], [titolo dell'opzione], [funzione da eseguire dal widget])) funzione ppbv_display () globale $ wpdb, $ ppbv_tablename; // chiama globale per l'uso in funzione eco "- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo""; // crea un eco contenitore""; // chiudi il contenitore?>Più popolare per visualizzazioni
"; // scrivi il titolo echo""; // crea una lista ordinata $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY view DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popolare come $ post) // loop attraverso l'array restituito di post popolari $ ID = $ post [1]; // memorizza i dati in una variabile per salvare alcuni caratteri e mantenere il pulitore del codice $ views = number_format ($ post [2]); // number_format aggiunge le virgole nei punti giusti per i numeri (es: da 12543 a 12,543) $ post_url = get_permalink ($ ID); // ottiene l'URL del post corrente nel ciclo $ title = get_the_title ($ ID); // ottiene il titolo del post corrente nel ciclo echo "
"; // chiudi l'elenco ordinato echo"- $ title - $ views visualizzazioni
"; // echo le informazioni in una voce di elenco // termina il ciclo echo"