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.
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:
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:
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'); ?>
register_activation_hook
. Questo è dove dovremmo creare le nostre tabelle del database.dbDelta
funzione per eseguire la query SQL come mostrato nel codice sopra.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.
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. = ''; $ authorsList. = ''. get_avatar ($ author-> ID). ''. get_the_author_meta ('display_name', $ author-> ID). '
'. get_the_author_meta ('description', $ author-> ID). '
get_users
funzione.user_can
funzione.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'. $ authorsList. ''. $ actStatus. 'Inserisci il tuo indirizzo email
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.
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'); ?>
wp_enqueue_script ( 'jQuery')
followjs
che si trova nella cartella dei plugin.wp_register_style
e wp_enqueue_style
funzioni. Si trova anche nella cartella dei plugin.plugins_url
la funzione ti darà il percorso della cartella corrente del plugin. Questo è il modo migliore per includere gli script. Alcune persone ottengono l'URL della directory dei plug-in e aggiungono il nome della cartella del plugin per ottenere il percorso. Questo non è raccomandato e causerà errori quando il nome della cartella del plugin viene modificato.wp_localize_script
funzione. ajaxUrl
- Ottiene il percorso del file Ajax in WordPress.ajaxNonce
- Fornisce una chiave univoca per ogni richiesta Ajax ai fini della convalida.CURRENTURL
- Ottiene il percorso dell'URL corrente per identificare la pagina dei contributori.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.
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.
subscribe_to_wp_authors
.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 ritorna0
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 (); ?>
wp_verify_nonce
funzione. Valori diversi di nonce significano che la richiesta AJAX dovrebbe essere invalida e scartata.is_email
.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.
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.
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))?>
followed_authors; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explode (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in_array ($ authorId, $ subscribedAuthorList))) array_push ( $ subscribedAuthorList, $ authorId);?>
followed_authors
valore della colonna nel wp_author_subscribe
tavolo.esplodere
e poi controlla se l'utente è già iscritto all'autore usando il in_array
funzione. Quindi aggiungiamo l'ID dell'autore all'elenco degli autori seguiti dell'utente.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 "))?>
$ authorSubscribersArray
e assegnando a una variabile chiamata $ followersList
$ subscribedAuthorList
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.
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.
Seguire
e controlla se l'autore è seguito dall'utente.inArray
la funzione è usata per questo e ritornerà -1
se la stringa di ricerca non viene trovata nell'array.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 (); ?>
wp_author_subscribe
.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.
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)) ?>
notify_author_followers
funzione.$ postale
oggetto. Quindi