nl.hideout-lastation.com
Paradijs Voor Ontwerpers En Ontwikkelaars


Inhoud beperken tot geregistreerde gebruikers [WP Plugin zelfstudie]

In de afgelopen tijd hebben de meeste websites voor online nieuws en informatiepublicaties het freemium-model overgenomen waarbij lezers die geen geregistreerd lid zijn, beperkt zijn tot een bepaald aantal artikelen die ze kunnen lezen; betalend, geregistreerde gebruikers aan de andere kant, hebben onbeperkte toegang tot artikelen.

In dit artikel laten we u zien hoe u een eenvoudige plug-in kunt bouwen die de beheerder van een WordPress-site de mogelijkheid biedt om bepaalde berichten, pagina's en een deel van een berichtinhoud alleen voor geregistreerde gebruikers te beperken .

Codering van de plug-in

Bij het schrijven van een WordPress-plug-in bevat de koptekst (een PHP-commentaarblok) sectie informatie zoals naam, beschrijving, auteur en auteur-URL van de plug-in. Hier is de plug-in header:

De plug-in heeft een instellingenpagina die bestaat uit een formulierveld dat de bericht- of pagina-ID's bevat die moeten worden beperkt.

De onderstaande code voegt een submenu toe aan de instellingen met de titel Restrict content To Registered User .

 add_action ('admin_menu', 'rcru_plugin_menu'); // Submenu toevoegen aan instellingen functie rcru_plugin_menu () {add_options_page ('Beperk inhoud naar geregistreerde gebruiker', 'Beperk inhoud naar geregistreerde gebruiker', 'manage_options', 'rcru-restrict-content-user', 'rcru_content_user_settings'); } 

Het vijfde argument rcru_content_user_settings doorgegeven aan add_options_page hierboven is de functie die de inhoud voor de plugin-instellingen uitvoert.

 function rcru_content_user_settings () {echo ' 
'; screen_icon (); echo '

Beperk inhoud tot geregistreerde gebruiker

'; echo '
'; do_settings_sections (rcru-beperken-content gebruiksaanwijzingen); settings_fields (rcru_settings_group); verzendknop(); }

De vorm mist de veld en het is nog niet in staat om gegevens in de database op te slaan, omdat we de WordPress-instellingen API nog moeten implementeren.

De functie plugin_option definieert de instellingensectie en het veld.

 // plug-in veld en secties functie plugin_option () {add_settings_section ('rcru_settings_section', 'Plugin Options', null, 'rcru-restrict-content-user'); add_settings_field ('post-page-id', '  ', 'post_page_field', 'rcru-restrict-content-user', 'rcru_settings_section'); // registerinstellingen register_setting ('rcru_settings_group', 'rcru_post-id-option'); 

Let op, het derde argument post_page_field doorgegeven aan de functie add_settings_field hierboven wordt aangeroepen om het formulier te echoën veld.

 functie post_page_field () {echo "Voer bericht of pagina-ID gescheiden door komma."; echo '  '; } 

De functie plugin_option is eindelijk gekoppeld aan de actie admin_init om deze in actie te brengen.

 add_action ('admin_init', 'plugin_option'); 

We zijn klaar met het bouwen van de pagina met plugin-instellingen, maar wat voor nut hebben de gegevens die door de instellingenpagina worden opgeslagen in de database als deze niet zal worden gebruikt?

De volgende is de codering van de functie restrict_content_register_user die de post- of pagina-ID zal ophalen om te worden beperkt tot alleen geregistreerde gebruikers (die zijn opgeslagen in de database op de pagina met plug-ininstellingen). Dit zorgt ervoor dat de huidige gebruiker die het bericht bekijkt is geregistreerd; anders wordt een foutmelding weergegeven dat de gebruiker moet worden geregistreerd.

Ten slotte wordt de functie gekoppeld aan het filter_content om de wijziging in de post of pagina te beïnvloeden.

 functie restrict_content_register_user ($ content) {global $ post; $ post_database = get_option ('rcru_post-id-option'); $ post_database = exploderen (', ', $ post_database); $ current_user = wp_get_current_user (); / * Als er geen inhoud is, ga terug. * / if (is_null ($ content)) return $ content; foreach ($ post_database als $ posts) {$ posts = trim ($ posts); if ($ posts == $ post -> ID) {if (username_exists ($ current_user -> user_login)) {/ * Retourneer de privécontent. * / return $ inhoud; } else {/ * Een alternatief bericht retourneren. * / terug ' 
U moet een geregistreerde gebruiker zijn om deze inhoud te lezen.
'; }}} retourneer $ inhoud; } add_filter ('the_content', 'restrict_content_register_user');

We zijn nu klaar met de eerste manier waarop de plug-in werkt: het gebruik van de plugin-instellingenpagina.

Wat overblijft is om de metabox en shortcode-functie toe te voegen aan de plug-in.

Metabox toevoegen

Als u een metabox met een selectievakje in de post- en paginabewerkingsschermen wilt toevoegen, kunt u die post of pagina beperken tot geregistreerde gebruikers wanneer het selectievakje is aangevinkt. De functie rcru_mb_create bevat de rcru_mb_create in alle berichten en pagina's wanneer deze is gekoppeld aan de actie add_meta_boxes .

 functie rcru_mb_create () {/ ** * @array $ schermen Schrijfscherm waarop de metabox getoond moet worden * @waarden post, pagina, dashboard, link, bijlage, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ schermen als $ scherm) {add_meta_box ('rcru-meta', 'Restrict Post / Page', 'rcru_mb_function', $ screen, 'normal', 'high'); }} add_action ('add_meta_boxes', 'rcru_mb_create'); 

De functie rcru_mb_function bevat het selectievakje en de beschrijving van de metabox.

 function rcru_mb_function ($ post) {// haal de metadata-waarden op als ze bestaan ​​$ limit_post = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Voeg een nonce veld toe zodat we dit later kunnen controleren bij het valideren van wp_nonce_field ('rcru_inner_custom_box', 'rcru_inner_custom_box_nonce'); echo ' 
Als u deze instelling aanvinkt, wordt dit bericht beperkt tot alleen geregistreerde gebruikers.
'; }

De functie rcru_mb_save_data verwerkt de beveiligingscontrole en het opslaan van de formulierwaarden in de database.

 functie rcru_mb_save_data ($ post_id) {/ * * We moeten verifiëren dat dit afkomstig was van ons scherm en met de juiste autorisatie, * omdat save_post op andere momenten kan worden geactiveerd. * / // Controleer of onze nonce is ingesteld. als (! isset ($ _ POST ['rcru_inner_custom_box_nonce'])) $ post_id retourneert; $ nonce = $ _POST ['rcru_inner_custom_box_nonce']; // Controleer of de nonce geldig is. if (! wp_verify_nonce ($ nonce, 'rcru_inner_custom_box')) retourneert $ post_id; // Als dit een automatische opslag is, is ons formulier niet ingediend, dus we willen niets doen. if (defined ('DOING_AUTOSAVE') && DOING_AUTOSAVE) retourneert $ post_id; // Controleer de machtigingen van de gebruiker. if ('page' == $ _POST ['post_type']) {if (! current_user_can ('edit_page', $ post_id)) retourneert $ post_id; } else {if (! current_user_can ('edit_post', $ post_id)) retourneert $ post_id; } / * OK, het is veilig voor ons om de gegevens nu op te slaan. * / // Als er oude items zijn, haal ze dan op $ old_restrict_post = get_post_meta ($ post_id, '_rcru_restrict_content', true); // Sanitaire gebruikersinvoer. $ restrict_post = sanitize_text_field ($ _ POST ['rcru_restrict_content']); // Werk het metaveld bij in de database. update_post_meta ($ post_id, '_rcru_restrict_content', $ restrict_post, $ old_restrict_post); } // hook om de metabox-gegevens add_action ('save_post', 'rcru_mb_save_data') op te slaan; 

De functie restrict_content_metabox onderzoekt een bepaald bericht of een bepaalde pagina om te zien of deze beperkingen heeft, controleert of de gebruiker die het bericht leest, is geregistreerd en geeft een bericht weer dat de gebruiker moet worden geregistreerd.

 function restrict_content_metabox ($ content) {global $ post; // haal de metagegevenswaarden op als ze bestaan ​​$ post_restricted = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // als de post of pagina een beperking heeft en de gebruiker niet is geregistreerd // geef de foutmelding weer als ($ post_restricted == 1 && (! gebruikersnaam_exists (wp_get_current_user () -> user_login))) {retour ' 
U moet een geregistreerde gebruiker zijn om deze inhoud te lezen.
'; } retourneer $ inhoud; } // haak de functie aan de post-inhoud om de wijziging add_filter ('the_content', 'restrict_content_metabox') uit te voeren;

De shortcode toevoegen

Met de shortcode kan een deel van een bericht worden beperkt tot alleen geregistreerde gebruikers.

De functie rcru_user_shortcodes bevat de shortcode hook-functie add_shortcode die de shortcode-tag [rcru-private] definieert. Het tweede argument dat aan add_shortcode is doorgegeven, is de callback-functie die wordt aangeroepen wanneer de shortcode in gebruik is.

 / * Functie voor het registreren van de shortcode. * / function rcru_user_shortcodes () {/ * Voegt de [rcru-private] shortcode toe. * / add_shortcode ('rcru-private', 'rcru_shortcode'); } 

De functie wordt dan geregistreerd om de actie init te init, zodat deze wordt herkend door WordPress-internals.

 / * Registreer shortcodes in 'init'. * / add_action ('init', 'rcru_user_shortcodes'); 

Ten slotte verwerkt de callback-functie rcru_shortcode de shortcode-uitvoer.

 / * Functie voor het verwerken van shortcode-uitvoer. * / function rcru_shortcode ($ attr, $ content = '') {/ * Controleer of de huidige gebruiker over de mogelijkheid 'read_private_content' beschikt. * / $ current_reader = wp_get_current_user (); if (! gebruikersnaam_exists ($ current_reader -> user_login)) {/ * Een alternatief bericht retourneren. * / terug ' 
U moet een geregistreerde gebruiker zijn om deze inhoud te lezen.
'; }}

Hoe de plug-in werkt

De plug-in heeft een instellingenpagina met een formulierveld waarin wordt toegestaan ​​dat bericht- en pagina-ID's worden beperkt, gescheiden door een komma.

Om een ​​gegeven bericht of pagina te beperken, voert u hun respectievelijke ID's in, gescheiden door een komma (, ) in de formulierveld. Om de ID van een bericht te krijgen, ga je naar het berichtbewerkingsscherm (TinyMCE-editor voor het schrijven van berichtinhoud) en bekijk je de URL van de pagina. Het nummer dat is toegevoegd aan ?post= is de bericht-ID.

Voor bijvoorbeeld http://wordpress.dev/wp-admin/post.php?post=88&action=edit is nummer 88 de post- of pagina-ID.

Metabox in bericht- en paginabewerkingsscherm

Een bericht of pagina kan ook worden beperkt tot geregistreerde gebruikers door het selectievakje Beperk inhoud aan te vinken in de metabox (toegevoegd door de plug-in aan het berichtbewerkingsscherm).

Korte code

Een deel of het gedeelte van een bericht of pagina-inhoud kan worden verborgen voor de openbare weergave en alleen worden weergegeven aan geregistreerde leden met behulp van een plug-in shortcode zoals deze:

 [rcru-private] Een deel van de inhoud van berichten of pagina's moet worden beperkt tot alleen geregistreerde gebruikers. [/ rcru-private] 

Ten slotte is hier een link naar het plug-in bestand. Voel je vrij om de code te verkennen en blij te coderen!

Noot van de redacteur : dit bericht is geschreven door Collins Agbonghama voor Hongkiat.com. Agbonghama is overdag een webontwikkelaar en 's nachts een freelance schrijver / blogger. Als hij niet met code worstelt, is hij dol op slapen op de bank en schrijft hij op zijn persoonlijke blog w3guy.com. Je kunt hem vinden op Facebook en Google+.

Top 9 Apps to Batch Installeren en verwijderen van Windows Apps

Top 9 Apps to Batch Installeren en verwijderen van Windows Apps

Het éénmalig installeren en de-installeren van apps is een noodzakelijk proces, vooral met een nieuwe Windows-versie geïnstalleerd. Het proces om het één voor één te doen is echter ook ongelooflijk vervelend en vervelend - maar nogmaals, essentieel.Een manier om dit proces te omzeilen, is door batches van apps in één keer te installeren of te verwijderen. Batch-i

(Technische en ontwerptips)

5 redenen waarom introverten geweldig zijn

5 redenen waarom introverten geweldig zijn

In onze moderne samenleving waarin de assertieve, charismatische persoonlijkheden de voorkeur hebben boven de eenzame, stille individuen, wordt een introverte persoon vaak als verlegen of zelfs asociaal beschouwd . Gezien het feit dat ze misschien afzijdig, onvriendelijk en zelfs snobistisch voor anderen lijken, is het misschien geen verrassing dat mensen soms niet genoeg aandacht schenken aan wat deze introverten te bieden hebben

(Technische en ontwerptips)