Semplice plugin WordPress per seguire i tuoi autori preferiti

L'incredibile tasso di crescita di WordPress ha semplificato lo sviluppo del sito web. Siti di tutorial popolari come la rete Tuts + usano WordPress per alimentare i loro siti web. Questi siti Web offrono centinaia di nuovi tutorial, articoli e aggiornamenti ogni giorno. Quindi tenere traccia di ogni articolo non è facile nemmeno con il tuo lettore di feed RSS. Il tuo lettore di feed sarà riempito di nuovi rapidamente e come lettori ci interessano solo determinati argomenti. Quindi idealmente avremmo bisogno di un metodo che fornisca articoli a cui siamo interessati. Generalmente gli autori sono specializzati in aree specifiche. Se Darren Rowse scrive un articolo sul blogging, ognuno vorrà leggerlo. Allo stesso modo abbiamo autori preferiti che vorremmo leggere ogni volta.

Quindi in questo tutorial creerò un semplice plugin per WordPress che ti permetterà di iscriverti ai tuoi autori preferiti. Riceverai un'email ogni volta che il tuo autore preferito pubblica un post. Quindi non ti perderai mai più gli articoli importanti.


Cosa stiamo sviluppando oggi

Il nostro plug-in consentirà fondamentalmente agli utenti di ricevere notifiche sui nuovi post dagli autori iscritti. Di seguito sono riportate le caratteristiche e i componenti che svilupperemo durante il tutorial:

  • Creazione di uno shortcode per elencare tutti gli autori
  • Permettere agli utenti di seguire e smettere di seguire gli autori
  • Invia email quando un nuovo post è pubblicato

Passaggio 1 Creazione del file plugin

Non ho intenzione di spiegare questo passaggio in dettaglio poiché potresti già sapere che un file plugin di WordPress deve avere una sezione commenti in alto per identificare i dettagli del plugin. Ho chiamato il plugin WP Segui Autori. Quindi crea una nuova directory nel / Wp-content / plugins directory chiamata -autori wp-seguire e creare il index.php file con i seguenti dettagli:

 

Passaggio 2 Creazione di tabelle sull'attivazione del plug-in

Abbiamo bisogno di due tabelle di database per questo plugin. Li sto nominando wp_author_subscribe e wp_author_followers (dove wp_ sarà in realtà il prefisso db configurato). La tavola wp_author_subscribe manterrà l'email degli iscritti, lo stato di attivazione e l'elenco degli autori seguito. Il wp_author_followers la tabella conterrà l'id dell'autore e l'elenco dei follower. Abbiamo bisogno di creare queste tabelle sull'attivazione del plugin. Quindi consideriamo il seguente codice.

 query ("DROP TABLE IF EXISTS $ wpdb-> prefisso author_subscribe"); $ sql1 = "CREATE TABLE $ wpdb-> prefisso author_subscribe (id int (11) NOT NULL AUTO_INCREMENT, activation_code varchar (255) NOT NULL, email varchar (75) NOT NULL, stato int (11) NOT NULL, testo follow_authors NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ SQL1); $ sql2 = ("CREATE TABLE $ wpdb-> prefisso author_followers (id int (11) NOT NULL AUTO_INCREMENT, author_id int (11) NOT NULL, testo followers_parami NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1 ; "); dbDelta ($ sql2);  register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
  • Possiamo creare una funzione da chiamare nell'attivazione del plugin usando register_activation_hook. Questo è dove dovremmo creare le nostre tabelle del database.
  • Le tabelle del database possono essere create utilizzando una query personalizzata WordPress. Ma il modo consigliato è usare il dbDelta funzione per eseguire la query SQL come mostrato nel codice sopra.

Passaggio 3 Shortcode per visualizzare l'elenco degli autori

Quindi dobbiamo visualizzare l'elenco di autori disponibili affinché gli utenti possano seguirli. Quindi creerò uno shortcode che ti permetterà di visualizzare l'elenco degli autori in ogni pagina. Iniziamo a creare lo shortocde.

 

Ho creato un codice breve chiamato contributori e una funzione chiamata contributori per visualizzare l'elenco degli autori. Tutto il codice relativo alla visualizzazione degli autori si trova all'interno di questa funzione. Devi creare una pagina speciale per mostrare i tuoi contributori. Puoi chiamarlo come vorresti che fosse. Quindi posiziona lo shortcode [contributori] all'interno della pagina e fare clic sul pulsante Pubblica. Ancora non abbiamo alcun codice all'interno della funzione shortcode. Quindi diamo un'occhiata a questo.

Visualizza lista autori

Alcuni blog consentono agli utenti di registrarsi. Saranno creati come abbonati in generale e gli abbonati non possono creare post. Quindi, quando visualizziamo l'elenco degli utenti, dobbiamo assicurarci di ottenere gli utenti che hanno la capacità di creare post. Diamo un'occhiata al codice qui sotto.

 '; foreach ($ authors as $ author) if (user_can ($ author-> ID, 'publish_posts')) $ authorsList. = '
'. get_avatar ($ author-> ID). '

'. get_the_author_meta ('display_name', $ author-> ID). '

'. get_the_author_meta ('description', $ author-> ID). '

'; $ authorsList. = '
'; ?>
  • Otteniamo tutti gli utenti usando il get_users funzione.
  • Quindi mentre esegui il ciclo attraverso l'elenco degli utenti, dobbiamo controllare se l'utente è autorizzato a pubblicare post usando il user_can funzione.
  • Creiamo il codice HTML per i dettagli degli autori che possono pubblicare post. Ho visualizzato l'immagine dell'autore usando gravatar, nome visualizzato dell'autore e descrizione.
  • Successivamente creiamo un pulsante per seguire gli autori. La cosa importante qui è che ho specificato a Dati-autore attributo e imposta l'ID dell'autore.

Ora abbiamo il codice HTML per la visualizzazione degli autori. Diamo un'occhiata al codice per la visualizzazione del modulo di iscrizione.

  
Segui gli autori di WP
'. $ actStatus. '
Inserisci il tuo indirizzo email
'. $ authorsList. '
'; echo $ output; ?>

In questo semplice modulo HTML abbiamo un campo di testo per un utente per inserire il loro indirizzo email. Quindi abbiamo 2 pulsanti per iscriversi e caricare l'elenco degli autori seguito. Userò AJAX attraverso questo plugin. Quindi l'ID e le classi di elementi HTML svolgono un ruolo vitale. Se controlli il vero file plugin, noterai che non ho spiegato il codice nella parte superiore del file contributori funzione. È usato per verificare l'attivazione e verrà spiegato in seguito. Ora abbiamo il modulo completo con la lista degli autori e sembrerà l'immagine del tutorial mostrata in alto.


Passaggio 4 Configurazione di JavaScript e CSS

Ora inizia la parte della funzionalità effettiva e abbiamo bisogno di alcuni stili CSS e file Javascript per supportare la nostra funzionalità. Quindi il codice seguente ti mostrerà come includere gli script e gli stili necessari nel modo consigliato.

  admin_url ('admin-ajax.php'), 'ajaxNonce' => wp_create_nonce ('follow-nonce'), 'currentURL' => $ _SERVER ['REQUEST_URI']); wp_localize_script ('followjs', 'ajaxData', $ config_array);  add_action ('wp_enqueue_scripts', 'apply_wp_author_scripts'); ?>

Passaggio 5 Iscriviti al plug-in

Per seguire gli autori, un utente deve iscriversi usando la sua email. Una volta che un utente inserisce la propria e-mail e fa clic sul pulsante Iscriviti, verrà abbonato al servizio e verrà inviata un'e-mail per attivare il servizio. Vediamo cosa succede quando si fa clic sul pulsante di iscrizione.

Creazione della richiesta AJAX per la sottoscrizione

 

Ho allegato una funzione jQuery utilizzando l'evento dal vivo per essere chiamato quando il pulsante Iscriviti (#subscribeAuthors) viene cliccato. Controlla se l'email è valida utilizzando un'espressione regolare. Quindi creiamo la richiesta AJAX per chiamare la funzione subscribe. Spiegherò la richiesta AJAX qui.

Gestione della richiesta AJAX in WordPress

Per gestire le richieste AJAX dal plugin, possiamo usare il seguente codice:

 

Ci sono azioni chiamate wp_ajax_nopriv e wp_ajax per gestire le richieste AJAX per gli utenti che sono stati disconnessi e loggati rispettivamente. Queste azioni sono seguite da un trattino basso e dall'azione che abbiamo definito nella richiesta AJAX dal file JS. Quindi in questo caso il subscribe_to_wp_authors l'azione chiamerà il subscribe_to_wp_authors funzione.

"Assicurati di usare morire() alla fine di ogni funzione AJAX nel tuo codice PHP da quando WordPress ritorna 0 o -1 in base al risultato della richiesta AJAX che potrebbe causare errori nelle stringhe JSON. "

Vediamo cosa succede all'interno della funzione:

 get_results ($ wpdb-> prepare ("seleziona * da $ wpdb-> prefisso author_subscribe dove email =% s", $ subscriber_email)); if (count ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> prepare ("INSERT INTO $ wpdb-> prefix author_subscribe (email, activation_code, status) VALORI (% s,% s,% s)", $ subscriber_email, $ activation_code, "unsubscribed")); $ activation_link = add_query_arg ('confirm-follow', $ activation_code, get_site_url (). $ _POST ['url']); if ($ result) if (wp_mail ($ subscriber_email, "WP Author Subscription", "Fai clic su $ activation_link per attivarlo.")) echo json_encode (array ("success" => "Controlla l'e-mail per il link di attivazione.") );  else echo json_encode (array ("error" => "Email Error."));  else echo json_encode (array ("error" => "Email già esistente."));  else echo json_encode (array ("error" => "Per favore inserisci email valida"));  die (); ?>

Quindi, una volta che l'utente fa clic sul link di attivazione nell'e-mail, verrà reindirizzato al sito Web con un messaggio di conferma dell'attivazione e il loro indirizzo e-mail verrà caricato nella casella di testo. Il controllo di attivazione viene eseguito nella parte superiore della funzione shortcode. Ho omesso la spiegazione prima, ora è il momento di dare un'occhiata a quel codice nel contributori funzione.

 get_results ($ wpdb-> prepare ("seleziona * da $ wpdb-> prefisso author_subscribe dove activation_code =% s e status = 0"), $ activationCode); if (count ($ activationCheck)! = 0) $ activationResult = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefisso author_subscribe set status = 1 dove activation_code =% s"), $ codice di attivazione); se ($ activationResult) $ confirmedEmail = $ activationCheck [0] -> email; $ actStatus = "Attivazione riuscita"; $ actClass = "successo";  else $ actStatus = "Attivazione fallita"; $ actClass = "errore"; ?>

Un utente può visitare direttamente la pagina degli autori o utilizzare il link di conferma. Quindi per prima cosa controlliamo se il conferma da seguire parametro è disponibile nell'URL per capire se si tratta di una richiesta di attivazione o meno. Quindi cerchiamo un'attivazione nella tabella del database per il codice di attivazione fornito nell'URL. Quindi aggiorniamo lo stato di attivazione dell'utente e visualizziamo il messaggio del risultato con la relativa classe CSS. Ora l'intero processo di iscrizione è completato. Ora l'utente può iniziare a seguire gli autori.


Passaggio 6 seguenti Autori

Ora l'attivazione è andata a buon fine e la tua email viene visualizzata nella casella di posta elettronica. Questo è il momento in cui è possibile scegliere gli autori dall'elenco e fare clic su "Seguire" pulsante. Vediamo come fare in modo che un utente segua un autore. Una richiesta AJAX verrà effettuata non appena si fa clic sul pulsante Segui di un autore specifico.

 

Ogni autore ha un pulsante di seguito davanti al suo nome che contiene una classe CSS chiamata Seguire. Quindi ogni volta che si fa clic su un pulsante Segui, il $ JQ ( "seguire "). Vive (" click") la funzione verrà attivata e possiamo ottenere solo il pulsante su cui si fa clic $ JQ (questo). Quindi facciamo una nuova richiesta AJAX come prima con l'azione follow_wp_authors.

L'unica differenza qui è che aggiungiamo un parametro aggiuntivo chiamato author_id alla richiesta Possiamo ottenere l'ID dell'autore usando il Dati-autore attributo che abbiamo definito nella sezione display. Ora diamo un'occhiata al codice PHP per gestire questa richiesta AJAX.

 

Dobbiamo aggiungere due nuove azioni per questa richiesta AJAX come abbiamo fatto in precedenza. La funzione follow_up_authors conterrà il codice utilizzato per seguire un autore. Dal momento che non ha senso spiegare ripetutamente il codice ripetuto, ho intenzione di spiegare le sezioni che sono necessarie. Quindi ti suggerisco di guardare la funzione nel file del plugin durante la lettura del tutorial. La parte iniziale della funzione verificherà il nonce, convaliderà l'e-mail e verificherà l'attivazione nel database. Quindi andiamo avanti.

Aggiunta di utenti per seguito

Dal momento che stiamo usando tabelle personalizzate nel nostro plugin, anche se ci sono molti autori disponibili nel sito, la nostra tabella autore sarà inizialmente vuota. Quindi, quando un utente fa clic sul pulsante Segui per un autore, possiamo verificare se l'autore è disponibile nella nostra tabella. Altrimenti facciamo la voce iniziale inserendo l'autore nella tabella. Considera il seguente codice:

 id; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Verifica se l'autore esiste e inserisci se non è già disponibile per seguire * / $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare (" seleziona * da $ wpdb- > prefisso author_followers dove author_id =% d "), $ authorId); if (count ($ authorResult) == '0') $ result = $ wpdb-> query ($ wpdb-> prepare (" INSERT INTO $ wpdb-> prefix author_followers (author_id) VALUES (% d) ", $ authorId))?>

Elenco degli autori seguiti per la ricezione degli utenti

 followed_authors; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explode (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in_array ($ authorId, $ subscribedAuthorList))) array_push ( $ subscribedAuthorList, $ authorId);?>

Ricezione autori Lista follower e finalizzazione Follow

 get_results ($ wpdb-> prepare ("seleziona * da $ wpdb-> prefisso author_followers dove author_id =% d"), $ authorId); if (count ($ authorResult) == '1') if ($ authorResult [0] -> followers_lististi! = ") $ authorSubscribersArray = explode (", ", $ authorResult [0] -> followers_parole); else $ authorSubscribersArray = array (); if (! (in_array ($ subscriberID, $ authorSubscribersArray))) array_push ($ authorSubscribersArray, $ subscriberID); // Elenco utenti che segue autore specifico $ followersLista = implode ("," , $ authorSubscribersArray); // Elenco degli autori seguito da utente specifico $ subscribedAuthorList = implode (",", $ subscribedAuthorList); $ result = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefisso author_followers set followers_list =% s dove author_id =% d "), $ followers, $ authorId; $ risultato = $ wpdb-> query ($ wpdb-> prepare (" update $ wpdb-> prefisso author_subscribe set follows_authors =% s dove email =% s "), $ subscribedAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" success "))?>

Passaggio 7 Autori non seguenti

Se questo plugin deve essere efficace, gli utenti potrebbero aver bisogno di avere la funzione di autori non seguiti e di seguire gli autori in qualsiasi momento. Spiegherò il processo di smettere di seguire un autore. Poiché è molto simile al seguente processo, tralascio i codici ripetitivi nella spiegazione.

Il pulsante in linea con tutti gli autori seguiti verrà visualizzato come A seguire. Quando si passa il mouse sul pulsante, il testo cambierà in un colore diverso come Smetti. Facendo clic sul pulsante, verrà effettuata un'altra richiesta AJAX per "annullare l'accesso" all'autore. Poiché solo il nome dell'azione è diverso dal codice precedente, non lo includerò qui. Puoi dare un'occhiata a $ JQ ( "seguire "). Vive (" click", function () nel followjs file.

La funzione utilizzata per smettere di seguire l'utente è unfollow_wp_authors. Questo codice è simile alla funzione autore successivo. Possiamo mettere il codice comune in una singola funzione in futuro se sei disposto ad estendere il plugin. Nella sezione autori successivi abbiamo aggiunto l'autore alla lista se non è già disponibile. In questo caso rimuoviamo l'autore dalla lista se già esiste. Il codice qui sotto mostra le modifiche rispetto alla funzione dell'autore successivo.

  $ valore) if ($ authorId == $ valore) unset ($ subscribedAuthorList [$ key]);  foreach ($ authorSubscribersArray as $ key => $ value) if ($ subscriberID == $ value) unset ($ authorSubscribersArray [$ key]); ?>

Puoi vedere che invece di spingere gli autori all'array, li rimuoviamo usando la funzione unset.


Passaggio 8 Caricamento delle informazioni seguenti sull'autore

Inizialmente l'indirizzo e-mail sarà vuoto quando caricherete la pagina con l'elenco degli autori poiché non abbiamo una procedura per identificare l'utente corrente. Quindi l'utente deve inserire l'e-mail e fare clic sul pulsante di caricamento per ottenere l'elenco con i seguenti dettagli di ciascun utente. Questa sarà un'altra richiesta AJAX simile a quelle precedenti e puoi dare un'occhiata al codice usando $ JQ ( "#") loadFollowers. Vivere ( "click", function () . Spiegherò la sezione dei risultati della richiesta poiché è leggermente diversa dalle precedenti.

 

Diamo un'occhiata alla funzione per caricare il seguente elenco di autori dal lato server:

 get_results ($ wpdb-> prepare ("seleziona * da $ wpdb-> prefisso author_subscribe dove email =% s e status = 1"), $ subscriber_email); if (count ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("seleziona * da $ wpdb-> prefisso author_subscribe dove id =% d"), $ subscriberID); if (count ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> follow_authors; $ userFollowedAuthors = explode (",", $ userFollowedAuthors); echo json_encode (array ("authors" => $ userFollowedAuthors));  else echo json_encode (array ("error" => "Per favore inserisci email valida"));  die (); ?>

Ora gli utenti sono abbonati al servizio e possono seguire e smettere di seguire gli autori quando vogliono. La parte finale e più importante del tutorial è l'invio di e-mail ai follower quando un post è pubblicato da un autore. Iniziamo.


Passaggio 9 Invio di email quando vengono pubblicati i post

Dobbiamo attivare un'azione quando un utente pubblica un nuovo post. WordPress fornisce una serie di azioni chiamate Post Status Transitions per ottenere questa funzionalità. Ho impostato quattro transizioni, che potrebbero essere attivate quando pubblichi un post.

 

Le azioni di cui sopra chiameranno il notify_author_followers funzione ogni volta che un post viene convertito in uno stato pubblicato da uno dei nuovi stati, bozza, in attesa o futuri. Quindi inviamo email usando il notify_author_followers funzione.

 post_author; $ authorDisplayName = get_the_author_meta ('display_name', $ publishedPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("seleziona * da $ wpdb-> prefix author_followers dove author_id =% d"), $ publishedPostAuthor); if (count ($ authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_parte; if ($ authorsFollowersList! = ") $ authorsFollowersEmails = $ wpdb-> get_results ($ wpdb-> prepare (" seleziona email da $ wpdb-> prefisso author_subscribe dove id in (% s) "), $ authorsFollowersList); $ bccList = "; foreach ($ authorsFollowersEmails as $ key => $ emailObject) $ bccList. = $ emailObject-> email. "";  $ bccList = substr ($ bccList, 0, -1); $ postMessage = "guid">

$ Post-> post_title

"; $ emailHeaders. =" Da: WP Segui autori "." \ r \ n "; $ emailHeaders. =" Ccn: $ bccList "." \ r \ n "; add_filter (" wp_mail_content_type ", create_function (" "," return "text / html"; ')); if (wp_mail ("[email protected]", "Nuovo post da $ authorDisplayName", $ postMessage, $ emailHeaders)) ?>