Den utrolige veksten i WordPress har forenklet utvikling av nettsider. Populære opplæringssider som Tuts + -nettverket bruker WordPress til å drive sine nettsteder. Disse nettstedene gir deg hundrevis av nye opplæringsprogrammer, artikler og oppdateringer daglig. Så holde orden på hver artikkel er ikke lett selv med RSS-leseren din. Din feed leser vil bli fylt med nye raskt, og som lesere er vi bare interessert i visse emner. Så ideelt ville vi trenge en metode som gir artikler som vi er interessert i. Generelt forfattere spesialiserer seg på bestemte områder. Hvis Darren Rowse skriver en artikkel om blogging, vil alle lese det. På samme måte har vi favorittforfattere som vi ønsker å lese hver gang.
Så i denne opplæringen skal jeg lage et enkelt WordPress-plugin som lar deg abonnere på favorittforfatterne dine. Du vil få en e-post hver gang din favorittforfatter publiserer et innlegg. Derfor vil du ikke gå glipp av viktige artikler igjen.
Vårt plugin vil i utgangspunktet tillate brukere å få varsler om nye innlegg fra abonnenterte forfattere. Følgende er funksjonene og komponentene vi skal utvikle under opplæringen:
Jeg kommer ikke til å forklare dette trinnet i detalj, siden du kanskje allerede vet at en WordPress-pluginfil må ha en kommentarseksjon øverst for å identifisere plugin-detaljene. Jeg har kalt pluginet WP Følg forfattere. Så opprett en ny katalog i / Wp-content / plugins katalog kalt wp-follow-forfattere og opprett index.php fil med følgende detaljer:
Vi trenger to databasetabeller for denne plugin. Jeg navngir dem wp_author_subscribe
og wp_author_followers
(hvor wp_
vil egentlig være det konfigurerte db-prefikset). Bordet wp_author_subscribe
vil beholde abonnentene e-post, aktiveringsstatus og etterfulgt av forfatterliste. De wp_author_followers
Tabellen inneholder forfatter-ID og liste over tilhenger. Vi må lage disse tabellene ved pluginaktivering. Så la oss vurdere følgende kode.
spørring ("DROP TABLE IF EXISTS $ wpdb-> prefix author_subscribe"); $ sql1 = "CREATE TABLE $ wpdb-> prefiks author_subscribe (id int (11) IKKE NULL AUTO_INCREMENT, activation_code varchar (255) IKKE NULL, email varchar (75) IKKE NULL, status int (11) IKKE NULL, followed_authors tekst IKKE NULL, PRIMARY KEY (id)) MOTOR = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ sql2 = ("CREATE TABLE $ wpdb-> prefiks author_followers (id int (11) IKKE NULL AUTO_INCREMENT, author_id int (11) IKKE NULL, followers_list tekst IKKE NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1 ; "); dbDelta ($ SQL2); register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
register_activation_hook
. Det er her vi skal lage våre databasetabeller.dbDelta
funksjon for å utføre SQL-spørringen som vist i koden ovenfor.Deretter må vi vise listen over forfattere som er tilgjengelige for at brukerne skal følge. Så jeg lager en kortkode som lar deg vise forfatterlisten på en gitt side. La oss begynne å lage shortocde.
Jeg har opprettet en kodenummer som heter bidragsytere
og en funksjon som kalles bidragsytere
for å vise forfatterlisten. Alle koden relatert til å vise forfattere er plassert inne i denne funksjonen. Du må opprette en spesiell side for å vise bidragsyterne dine. Du kan nevne det uansett hva du vil at det skal være. Sett deretter kortnummeret [bidragsytere]
på siden og klikk på publiseringsknappen. Likevel har vi ikke noen kode inne i shortcode-funksjonen. Så la oss se på det.
Noen blogger tillater brukere å registrere seg. De vil bli opprettet som abonnenter generelt, og abonnenter kan ikke opprette innlegg. Så når vi viser brukerlisten, må vi sørge for at brukerne får muligheten til å skape innlegg. La oss se på koden nedenfor.
'; foreach ($ forfattere som $ forfatter) 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 ('beskrivelse', $ author-> ID). '
get_users
funksjon.user_can
funksjon.data-forfatter
Tilordne og angi forfatterens ID.Nå har vi HTML-koden for å vise forfattere. Så la oss se på koden for å vise abonnementsskjemaet.
Følg WP Forfattere'. $ authorsList. ''. $ actStatus. 'Skriv inn din email
I dette enkle HTML-skjemaet har vi et tekstfelt for en bruker å skrive inn sin e-postadresse. Deretter har vi 2 knapper for å abonnere og laste den etterfulgte forfatterlisten. Jeg bruker AJAX gjennom hele dette pluginet. Så id og klasser av HTML-elementer spiller en viktig rolle. Hvis du sjekker den faktiske pluginfilen, vil du legge merke til at jeg ikke har forklart koden øverst i bidragsytere
funksjon. Det er vant til å bekrefte aktiveringen og vil bli forklart senere. Nå har vi fullstendig skjema med listen over forfattere, og det vil se ut som opplæringsbildet som vises øverst.
Nå begynner den faktiske funksjonalitetsdelen, og vi trenger noen CSS-stiler og Javascript-filer for å støtte vår funksjonalitet. Så følgende kode vil vise deg hvordan du tar med nødvendige skript og stiler på den anbefalte måten.
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
som er i plugin-mappen.wp_register_style
og wp_enqueue_style
funksjoner. Den ligger også i plugin-mappen.plugins_url
funksjonen gir deg banen til gjeldende plugin-mappe. Dette er den beste måten å inkludere skript på. Noen mennesker får plugin-katalogadressen og legger til plugin-mappenavnet for å få banen. Dette anbefales ikke, og det vil føre til feil når navnet på plugin-mappen blir endret.wp_localize_script
funksjon. ajaxUrl
- Får banen til ajax-filen i WordPress.ajaxNonce
- Gir en unik nøkkel til alle ajax-forespørsler for validering.CURRENTURL
- Finner banen til den nåværende nettadressen for å identifisere siden med bidragsytere.For å følge forfattere må en bruker abonnere ved hjelp av e-posten sin. Når en bruker går inn i e-posten og klikker på knappen Abonner, vil de abonnere på tjenesten, og en e-post vil bli sendt for å aktivere tjenesten. La oss se hva som skjer når du klikker på abonnentknappen.
Jeg har vedlagt en jQuery-funksjon ved bruk av live-arrangementet som skal ringes når knappen Abonner (#subscribeAuthors
) er klikket. Det kontrollerer om e-posten er gyldig med et vanlig uttrykk. Deretter oppretter vi AJAX-forespørselen for å ringe abonnementsfunksjonen. Jeg skal forklare AJAX-forespørselen her.
subscribe_to_wp_authors
.For å håndtere AJAX-forespørsler fra plugin kan vi bruke følgende kode:
Det er handlinger kalt wp_ajax_nopriv
og wp_ajax
Å håndtere AJAX-forespørsler for brukere som er logget ut og logget inn henholdsvis. Disse handlingene følges av en understrek og handlingen vi definerte i AJAX-forespørselen fra JS-filen. Så i dette tilfellet subscribe_to_wp_authors
handling vil ringe på subscribe_to_wp_authors
funksjon.
"Pass på å bruke
dø()
på slutten av hver AJAX-funksjon i PHP-koden din siden WordPress returnerer0
eller-1
avhengig av resultatet av AJAX-forespørselen, som kan føre til feil i JSON-strenger. "
La oss se hva som skjer inne i funksjonen:
get_results ($ wpdb-> prepare ("velg * fra $ wpdb-> prefix author_subscribe der email =% s", $ subscriber_email)); hvis (count ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> forberede ("INSERT INTO $ wpdb-> prefix author_subscribe (email, activation_code, status) VALUES (% s,% s,% s)", $ subscriber_email, $ activation_code, "unsubscribed")); $ activation_link = add_query_arg ('confirm-follow', $ activation_code, get_site_url (). $ _POST ['url']); hvis ($ resultat) hvis (wp_mail ($ subscriber_email, "WP Author Subscription", "Klikk $ activation_link for å aktivere.")) echo json_encode (array ("suksess" => "Vennligst sjekk e-post for aktiveringskobling.") ); ellers echo json_encode (array ("error" => "Email Error.")); else echo json_encode (array ("error" => "Email eksisterer allerede.")); else echo json_encode (array ("error" => "Vennligst fyll inn gyldig e-post")); dø (); ?>
wp_verify_nonce
funksjon. Ulike verdier betyr at AJAX-forespørselen skal være ugyldig og kasseres.is_email
.Så når brukeren klikker på aktiveringslenken i e-posten, blir de sendt tilbake til nettsiden med en aktiveringssuksessmelding, og e-postadressen blir lastet inn i tekstboksen. Aktiveringskontrollen er gjort øverst på shortcode-funksjonen. Jeg har utelatt forklaringen tidligere, nå er det på tide å se på koden i bidragsytere
funksjon.
get_results ($ wpdb-> prepare ("velg * fra $ wpdb-> prefix author_subscribe der activation_code =% s og status = 0"), $ activationCode); ($ activationCheck)! = 0) $ activationResult = $ wpdb-> forespørsel ($ wpdb-> forberede ("oppdatere $ wpdb-> prefiks author_subscribe set status = 1 hvor activation_code =% s"), $ aktiviseringskode); hvis ($ activationResult) $ confirmedEmail = $ activationCheck [0] -> email; $ actStatus = "Activation Successfull"; $ actClass = "suksess"; else $ actStatus = "Aktivering mislyktes"; $ actClass = "error"; ?>
En bruker kan besøke forfatterens side direkte eller ved hjelp av bekreftelseslinken. Så først sjekker vi om bekrefte følge
parameteren er tilgjengelig i nettadressen for å finne ut om dette er en aktiveringsforespørsel eller ikke. Deretter søker vi etter en aktivering i databasetabellen for aktiveringskoden som er oppgitt i nettadressen. Da oppdaterer vi brukerens aktiveringsstatus og viser resultatmeldingen med relative CSS-klasse. Nå er hele prosessen med å abonnere fullført. Nå kan brukeren begynne å følge forfattere.
Nå aktiveres aktiveringen og e-posten din vises i e-postboksen. Dette er tidspunktet hvor du kan velge forfattere fra listen og klikke på "Følg"
knapp. La oss se hvordan du får en bruker til å følge en forfatter. En AJAX-forespørsel vil bli gjort så snart du klikker på følgeknappen til en bestemt forfatter.
Hver forfatter har en følgeknapp foran navnet hans som inneholder en CSS-klasse som heter Følg
. Så hver gang en følge-knapp klikkes, $ Jq ( "follow "). Live (" klikk")
funksjonen vil bli utløst, og vi kan bare få den klikkte knappen ved hjelp av $ Jq (denne)
. Da lager vi en ny AJAX-forespørsel som tidligere med handlingen follow_wp_authors
.
Den eneste forskjellen her er at vi legger til en ekstra parameter som heter author_id
til forespørselen. Vi kan få forfatterens ID ved hjelp av data-forfatter
attributt vi definerte i displayet delen. La oss bare ta en titt på PHP-koden for å håndtere denne AJAX-forespørselen.
Vi må legge til to nye handlinger for denne AJAX-forespørselen som vi gjorde tidligere. Funksjonen follow_up_authors
vil inneholde koden som brukes til å følge en forfatter. Siden det ikke er noe poeng som forklarer repeterende kode igjen og igjen, skal jeg forklare de seksjonene som er nødvendige. Så jeg foreslår at du ser på funksjonen i plugin-filen mens du leser gjennom opplæringen. Den første delen av funksjonen vil verifisere nonce, validere e-posten, og se etter aktivering i databasen. Så la oss gå videre.
Siden vi bruker egendefinerte tabeller i pluginet vårt, selv om det er mange forfattere tilgjengelig på nettstedet, vil vår forfattertabell i utgangspunktet være tom. Så når en bruker klikker på Følg-knappen for en forfatter, kan vi sjekke om forfatteren er tilgjengelig i vårt bord. Hvis ikke, gjør vi den første oppføringen ved å sette forfatteren inn i tabellen. Vurder følgende kode:
id; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Sjekk om forfatter eksisterer og sett inn hvis ikke allerede tilgjengelig for å følge * / $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare (" velg * fra $ wpdb- > prefix author_followers where author_id =% d "), $ authorId), hvis (count ($ authorResult) == '0') $ result = $ wpdb-> spørring ($ wpdb-> forberede (" INSERT INTO $ wpdb-> prefix author_followers (author_id) verdier (% d) ", $ authorId));?>
followed_authors; hvis $ subscribedAuthorList! = ") $ subscribedAuthorList = eksplodere (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); hvis (! (in_array ($ authorId, $ subscribedAuthorList))) array_push $ subscribedAuthorList, $ authorId);?>
followed_authors
kolonneverdi i wp_author_subscribe
bord.eksplodere
og kontroller om brukeren allerede abonnerer på forfatteren ved hjelp av in_array
funksjon. Deretter legger vi til forfatter-ID-en i brukerens etterfølgende forfatterliste.get_results ($ wpdb-> prepare ("velg * fra $ wpdb-> prefix author_followers hvor author_id =% d"), $ authorId); hvis (count ($ authorResult) == '1') if ($ authorResult [0] -> followers_list! = ") $ authorSubscribersArray = explodere (", ", $ authorResult [0] -> followers_list); else $ authorSubscribersArray = array (); hvis (! (in_array ($ subscriberID, $ authorSubscribersArray))) array_push ($ authorSubscribersArray, $ subscriberID); // Brukerliste som følger spesifikk forfatter $ followersList = implode , $ authorSubscribersArray); // Forfatterliste etterfulgt av spesifikk bruker $ subscribedAuthorList = implode (",", $ subscribedAuthorList); $ result = $ wpdb-> spørring ($ wpdb-> forberede ("oppdatere $ wpdb-> prefiks author_followers sett followers_list =% s hvor author_id =% d "), $ følgereList, $ authorId); $ result = $ wpdb-> forespørsel ($ wpdb-> forbered (" oppdater $ wpdb-> prefix author_subscribe set followed_authors =% s hvor e-post =% s "), $ subscribedAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" suksess "));
$ authorSubscribersArray
og tilordne til en variabel som heter $ followersList
$ subscribedAuthorList
Hvis dette pluginet skal være effektivt, kan det hende at brukerne må ha funksjonen til å forfølge forfattere, samt følge forfattere til enhver tid. Jeg vil forklare prosessen med å ikke følge en forfatter. Siden det er veldig lik den følgende prosessen, kommer jeg til å utelate repeterende koder i forklaringen.
Knappen inline med alle de etterfølgende forfatterne vil bli vist som Følgende. Når du svinger på knappen, endres tekst til annen farge som Slutt å følge. Når du klikker på knappen, vil en annen AJAX-forespørsel bli gjort til "Unollow" forfatteren. Siden bare handlingsnavnet er forskjellig fra koden ovenfor, kommer jeg ikke til å inkludere den her. Du kan se på $ Jq ( "Følgende "). Live (" klikk", function ()
i followjs
fil.
Funksjonen som brukes til å ufølge brukeren er unfollow_wp_authors
. Denne koden ligner på følgende forfatterfunksjon. Vi kan sette den felles koden til en enkelt funksjon i fremtiden hvis du er villig til å utvide plugin. I den følgende forfatterens seksjon lagde vi forfatteren til listen hvis den ikke allerede var tilgjengelig. I dette tilfellet fjerner vi bare forfatteren fra listen hvis den allerede eksisterer. Koden nedenfor viser endringene i forhold til følgende forfatterfunksjon.
$ verdi) hvis ($ authorId == $ verdi) unset ($ subscribedAuthorList [$ key]); foreach ($ authorSubscribersArray som $ key => $ verdi) if ($ subscriberID == $ verdi) unset ($ authorSubscribersArray [$ key]); ?>
Du kan se at i stedet for å skyve forfattere til matrisen, fjerner vi dem ved hjelp av funksjonen unset.
I utgangspunktet vil e-postadressen være tom når du laster siden med forfatterlisten, siden vi ikke har en fremgangsmåte for å identifisere den gjeldende brukeren. Deretter må brukeren skrive inn e-posten og klikke på lasteknappen for å få listen med følgende detaljer for hver bruker. Dette kommer til å være en annen AJAX-forespørsel som ligner på de forrige, og du kan se på koden ved hjelp av $ Jq ( "# loadFollowers"). Live ( "klikk", function ()
. Jeg skal forklare resultatdelen av forespørselen, siden den er litt annerledes enn de forrige.
Følg
og sjekker om forfatteren etterfølges av brukeren.inArray
funksjonen brukes til dette og den kommer tilbake -1
hvis søkestrengen ikke er funnet i matrisen.La oss se på funksjonen for å legge inn forfatterliste fra server side:
get_results ($ wpdb-> prepare ("velg * fra $ wpdb-> prefix author_subscribe der e-post =% s og status = 1"), $ subscriber_email); hvis (count ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("velg * fra $ wpdb-> prefix author_subscribe der id =% d"), $ subscriberID); hvis (count ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> followed_authors; $ userFollowedAuthors = eksplodere (",", $ userFollowedAuthors); ekko json_encode (array ("authors" => $ userFollowedAuthors)); else echo json_encode (array ("error" => "Vennligst fyll inn gyldig e-post")); dø (); ?>
wp_author_subscribe
.Nå abonnerer brukerne på tjenesten og kan følge og unollow forfattere når de vil. Den endelige og viktigste delen av opplæringen er å sende e-post til tilhenger når et innlegg publiseres av en forfatter. La oss komme i gang.
Vi må utløse en handling når noen bruker publiserer et nytt innlegg. WordPress gir et sett med handlinger kalt Post Status Transitions for å oppnå denne funksjonaliteten. Jeg har satt opp fire overganger, som kan utløses når du publiserer et innlegg.
Ovennevnte handlinger vil ringe til notify_author_followers
fungere når et innlegg konverteres til en publisert tilstand fra en av nye, utkast, ventende eller fremtidige stater. Så la oss sende e-post med notify_author_followers
funksjon.
post_author; $ authorDisplayName = get_the_author_meta ('display_name', $ publishedPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("velg * fra $ wpdb-> prefix author_followers hvor author_id =% d"), $ publishedPostAuthor); hvis (count ($ authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_list; hvis ($ authorsFollowersList! = ") $ authorsFollowersEmails = $ wpdb-> get_results ($ wpdb-> forberede (" velg e-post fra $ wpdb-> prefix author_subscribe der id i% s) "), $ authorsFollowersList); $ bccList = "; foreach ($ authorsFollowersEmails as $ key => $ emailObject) $ bccList. = $ emailObject-> email. ""; $ bccList = substr ($ bccList, 0, -1); $ postMessage = "guid">$ Post-> POST_TITLE
"; $ emailHeaders. =" Fra: WP Følg forfattere". \ r \ n"; $ emailHeaders. = "Bcc: $ bccList". "\ r \ n"; add_filter ("wp_mail_content_type", create_function ("", "return" tekst / html ";")); hvis (wp_mail ("[email protected]", "Ny post fra $ authorDisplayName", $ postMessage, $ emailHeaders)) >>
notify_author_followers
funksjon.$ post
gjenstand. Deretter får vi listen over tilhenger for gjeldende forfatter fra $ wpdb-> prefiks author_followers
bord.$ Wpdb-> prefiks author_subscribe
bord.wp_mail_content_type
funksjon.$ emailHeaders
variabel. Vi vil heller ikke at brukere skal se andre brukeres e-postadresser. Så legg til e-postlisten over tilhengerne til bcc Overskrift.wp_mail
fungere som vist ovenfor.Vi har fullført prosessen med å lage et grunnleggende WordPress-plugin for å følge forfattere. Når et innlegg er publisert, vil følgere bli varslet. Det er så enkelt.
Jeg måtte lage en lang opplæring for å forklare alt i å lage denne typen plugin ved hjelp av AJAX. Dette er fortsatt på sitt mest grunnleggende nivå. Som bruker vil jeg ha funksjonaliteten til å følge forfattere i hver blogg jeg leser. Så som webmastere bør du vurdere å forbedre pluginfunksjonalitetene slik at brukerne følger sine favorittforfattere. Du vil også få en gratis e-post abonnentliste som en bonus. Håper du likte opplæringen o