no.hideout-lastation.com
Paradis For Designere Og Utviklere


Slik begrenser innhold til registrerte brukere [WP Plugin Tutorial]

I de siste tidene har de fleste nettbaserte nyheter og informasjonspublisering nettsteder vedtatt freemiummodellen hvor lesere som ikke er registrert, er begrenset til et bestemt antall artikler som de kan lese; betalende, registrerte brukere derimot har ubegrenset tilgang til artikler.

I denne artikkelen vil vi vise deg hvordan du bygger en enkel plugin som gir administratoren av et WordPress-drevet nettsted muligheten til å begrense bestemte innlegg, sider og deler av et innlegginnhold kun til registrerte brukere.

Koding av plugin

Når du skriver et WordPress-plugin, inneholder overskriften (en PHP-kommentarblokk) informasjon som navn, beskrivelse, forfatter og forfatter-nettadresse for plugin. Her er pluginheader:

Pluggen vil ha en innstillingsside som består av et skjemafelt som vil inneholde post- eller side-IDene som skal begrenses.

Koden nedenfor vil legge til en undermeny i Innstillingene med tittelen Restrict content To Registered User .

 add_action ('admin_menu', 'rcru_plugin_menu'); // Legge til undermeny til innstillingsfunksjonen rcru_plugin_menu () {add_options_page ('Begrens innhold til registrert bruker', 'Begrens innhold til registrert bruker', 'manage_options', 'rcru-restrict-content-user', 'rcru_content_user_settings'); } 

Det femte argumentet rcru_content_user_settings sendt til add_options_page ovenfor, er funksjonen som vil add_options_page innholdet for add_options_page .

 funksjon rcru_content_user_settings () {echo ' 
'; screen_icon (); ekko '

Begrens innhold til registrert bruker

'; ekko '
'; do_settings_sections ( 'rcru-begrenser-innhold brukeren'); settings_fields ( 'rcru_settings_group'); submit_button (); }

Skjemaet mangler feltet og det er ikke i stand til å lagre data til databasen fordi vi ennå ikke har implementert API-innstillingene for WordPress.

Funksjonen plugin_option definerer innstillingsseksjonen og feltet.

 // plugin felt og seksjoner funksjon plugin_option () {add_settings_section ('rcru_settings_section', 'Plugin Options', null, 'rcru-restrict-content-user'); add_settings_field ('post-siden-ID', '  ', 'post_page_field', 'rcru-restrict-content-user', 'rcru_settings_section'); // registreringsinnstillinger register_setting ('rcru_settings_group', 'rcru_post-id-option'); 

Husk, det tredje argumentet post_page_field bestått til add_settings_field funksjonen ovenfor kalles for å ekko skjemaet felt.

 funksjon post_page_field () {echo "Skriv inn post eller side ID separert med komma."; ekko '  '; } 

Funksjonen plugin_option er endelig hekta til admin_init handlingen for å sette den til handling.

 add_action ('admin_init', 'plugin_option'); 

Vi er ferdige med å bygge plugininnstillingssiden, men hvilken bruk er dataene lagret av innstillingssiden til databasen hvis den ikke skal brukes?

Deretter er kodingen av funksjonen restrict_content_register_user som henter innleggs- eller side-ID-en for å være begrenset til bare registrerte brukere (som ble lagret i databasen på siden for plugininnstillinger). Dette sikrer at den nåværende brukeren som ser innlegget er registrert; ellers vil en feilmelding som forteller brukeren å registrere bli vist.

Endelig vil funksjonen bli hekta til filteret for innhold for å påvirke endringen i innlegget eller siden.

 funksjon restrict_content_register_user ($ content) {global $ post; $ post_database = get_option ('rcru_post-id-option'); $ post_database = eksplodere (', ', $ post_database); $ current_user = wp_get_current_user (); / * Hvis det ikke er noe innhold, returner. * / hvis (is_null ($ content)) returnerer $ content; foreach ($ post_database som $ innlegg) {$ posts = trim ($ innlegg); hvis ($ innlegg == $ post -> ID) {hvis (brukernavn_eksisterer ($ current_user -> user_login)) {/ * Retur privat innhold. * / retur $ innhold; } ellers {/ * Returner en alternativ melding. */ komme tilbake ' 
Du må være en registrert bruker for å lese dette innholdet.
'; }}} returnere $ innhold; } add_filter ('the_content', 'restrict_content_register_user');

Vi er nå ferdig med den første måten plugin-arbeidet: bruk av plugininnstillingssiden.

Det som er igjen er å legge til metabox- og shortcode- funksjonen til plugin-modulen.

Legge til metaboks

Hvis du vil legge til en metaboks som inneholder en avkrysningsboks i innleggs- og sideredigeringsskjermbildene, tillates begrensning av det innlegget eller siden til registrert bruker når avkryssingsboksen er merket. Funksjonen rcru_mb_create vil inneholde meta-boksen i alle innlegg og sider når den er koblet til add_meta_boxes handlingen.

 funksjon rcru_mb_create () {/ ** * @array $ skjermbilder Skriv skjerm som skal vise meta-boksen * @values ​​post, side, dashboard, lenke, vedlegg, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ skjerm som $ skjerm) {add_meta_box ('rcru-meta', 'Restrict Post / Page', 'rcru_mb_function', $ skjerm, 'normal', 'høy'); }} add_action ('add_meta_boxes', 'rcru_mb_create'); 

Funksjonen rcru_mb_function inneholder avkrysningsruten og beskrivelsen av metaboxen.

 funksjon rcru_mb_function ($ post) {// henter metadataverdiene hvis de eksisterer $ restrict_post = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Legg til et nonce-felt, slik at vi kan sjekke det senere når vi validerer wp_nonce_field ('rcru_inner_custom_box', 'rcru_inner_custom_box_nonce'); ekko ' 
Ved å sjekke denne innstillingen begrenses dette innlegget til kun registrerte brukere.
'; }

Funksjonen rcru_mb_save_data håndterer sikkerhetskontrollen og lagrer skjemaverdiene til databasen.

 funksjon rcru_mb_save_data ($ post_id) {/ * * Vi må bekrefte dette kom fra skjermen vår og med riktig autorisasjon, * fordi save_post kan utløses andre ganger. * / / Sjekk om vår nonce er satt. hvis (! isset ($ _ POST ['rcru_inner_custom_box_nonce'])) returnere $ post_id; $ nonce = $ _POST ['rcru_inner_custom_box_nonce']; // Bekreft at nonce er gyldig. hvis (! wp_verify_nonce ($ nonce, 'rcru_inner_custom_box')) returnere $ post_id; // Hvis dette er en autosave, har skjemaet ikke blitt sendt, så vi vil ikke gjøre noe. hvis (definert ('DOING_AUTOSAVE') && DOING_AUTOSAVE) returnere $ post_id; // Kontroller brukerens tillatelser. hvis ('side' == $ _POST ['post_type']) {if (! current_user_can ('edit_page', $ post_id)) returnere $ post_id; } ellers {hvis (! current_user_can ('edit_post', $ post_id)) returnere $ post_id; } / * OK, det er trygt for oss å lagre dataene nå. * / // Hvis gamle oppføringer eksisterer, hent dem $ old_restrict_post = get_post_meta ($ post_id, '_rcru_restrict_content', true); // Sanitiser brukerinngang. $ restrict_post = sanitize_text_field ($ _ POST ['rcru_restrict_content']); // Oppdater meta-feltet i databasen. update_post_meta ($ post_id, '_rcru_restrict_content', $ restrict_post, $ old_restrict_post); } // hook for å lagre meta-boksen data add_action ('save_post', 'rcru_mb_save_data'); 

Funksjonen restrict_content_metabox vil undersøke et gitt innlegg eller en side for å se om det har begrensninger, kontroller om brukeren som leser innlegget, er registrert og viser et varsel som forteller brukeren å registrere seg.

 funksjon restrict_content_metabox ($ content) {global $ post; // hente metadataverdiene hvis de eksisterer $ post_restricted = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // hvis posten eller siden har begrensninger og brukeren ikke er registrert // vis feilmeldingen hvis ($ post_restricted == 1 && (! brukernavn_eksisterer (wp_get_current_user () -> user_login))) 
Du må være en registrert bruker for å lese dette innholdet.
'; } returner $ innhold } // koble funksjonen til innleggets innhold for å aktivere endringen add_filter ('the_content', 'restrict_content_metabox');

Legge til kortnummeret

Med kortnummeret kan en del av et innlegg begrenses til kun registrerte brukere.

Funksjonen rcru_user_shortcodes inneholder rcru_user_shortcodes hook-funksjonen add_shortcode som definerer [rcru-private] taggen [rcru-private] . Det andre argumentet passert til add_shortcode er tilbakeringingsfunksjonen som kalles når kortnummeret er i bruk.

 / * Funksjon for registrering av kortnummer. * / funksjon rcru_user_shortcodes () {/ * Legger til [rcru-private] shortcode. * / add_shortcode ('rcru-private', 'rcru_shortcode'); } 

Funksjonen er da registrert til init handling, slik at den blir gjenkjent av WordPress internals.

 / * Registrer kortkoder i 'init'. * / add_action ('init', 'rcru_user_shortcodes'); 

Til slutt håndterer rcru_shortcode tilbakeringingsfunksjonen kortkodeutgangen.

 / * Funksjon for håndtering av kortkodeutgang. * / funksjon rcru_shortcode ($ attr, $ content = '') {/ * Sjekk om den nåværende brukeren har 'read_private_content' -funksjonen. * / $ current_reader = wp_get_current_user (); hvis (! brukernavn_eksisterer ($ current_reader -> user_login)) {/ * Returner en alternativ melding. */ komme tilbake ' 
Du må være en registrert bruker for å lese dette innholdet.
'; }}

Hvordan plugin fungerer

Pluggen vil ha en innstillingsside med et skjemafelt som godtar Post & Page IDs for å være begrenset, avgrenset av et komma.

For å begrense et bestemt innlegg eller en side, skriv inn deres respektive ID, adskilt med et komma (, ) i skjemafelt. For å få ID for et innlegg, gå til skjermbildet for innleggsredigering (TinyMCE-editor for å skrive innleggsinnhold), og se på nettadressen til siden. Tallet vedlagt til ?post= er post-ID.

For eksempel, for http://wordpress.dev/wp-admin/post.php?post=88&action=edit, nummer 88 er post- eller side-ID.

Metabox i post og side redigeringsskjerm

Et innlegg eller en side kan også være begrenset til registrerte brukere ved å krysse av i avgrensningsruten Begrens innhold som ligger på metaboxen (lagt til ved plugin til postredigeringsskjermen).

Kort kode

Del eller seksjonen av et innlegg eller sideinnhold kan skjules fra offentlig visning og vises bare til registrerte medlemmer ved hjelp av en plugin-kortkode som dette:

 [rcru-private] Del av innlegg eller sideinnhold skal begrenses til kun registrerte brukere. [/ rcru-private] 

Til slutt, her er en lenke til plugin-filen. Ta gjerne med koden og gledelig koding!

Redaktørens notat : Dette innlegget er skrevet av Collins Agbonghama for Hongkiat.com. Agbonghama er en webutvikler om dagen og frilansskribent / blogger om natten. Når han ikke snakkes med kode, er han glad i å sove på sofaen og skriver på sin personlige blogg w3guy.com. Du finner ham på Facebook og G +.

15 Funtastic Playgrounds Du ønsket å være rundt når du var barn

15 Funtastic Playgrounds Du ønsket å være rundt når du var barn

Husker du når du var ung og elsket å henge fra apenbarer, spilte med sand og tok dristige sprang fra svinger? Lekeplasser er fantastiske steder hvor et barn (eller stor barn) kan bli skitten og oppleve gleden av å være ung og fri.Her har jeg satt sammen et utvalg av 15 kreativt utformede lekeplasser fra hele verden . Me

(Tekniske og design tips)

5 beste 360 ​​° kameraer for å lage virtuelle virkelighet videoer

5 beste 360 ​​° kameraer for å lage virtuelle virkelighet videoer

En av de futuristiske tingene som blir vanvittig populær over hele verden, er Virtual Reality (VR) -videoene. Hvis du har bodd under en stein, er en VR-video en slags video som gir deg en førstepersons visuell opplevelse som gir deg inntrykk av at du faktisk er der på scenen.Det gir deg også en dybde på 360 grader, slik at du kan se deg rundt i alle retninger du velger å se på . Som V

(Tekniske og design tips)