it.hideout-lastation.com
Paradiso Per Designer E Sviluppatori


Come limitare il contenuto agli utenti registrati [WP Plugin Tutorial]

In tempi recenti, la maggior parte dei siti Web di pubblicazione di notizie e informazioni online ha adottato il modello freemium in base al quale i lettori che non sono membri registrati sono limitati a un determinato numero di articoli che possono leggere; pagando, gli utenti registrati, invece, hanno accesso illimitato agli articoli.

In questo articolo, ti mostreremo come creare un semplice plug-in che offra all'amministratore di un sito basato su WordPress la possibilità di limitare determinati post, pagine e parte di un contenuto del post agli utenti registrati.

Coding the Plugin

Quando si scrive un plug-in di WordPress, l'intestazione (un blocco di commenti PHP) contiene informazioni come nome, descrizione, autore e autore dell'URL del plug-in. Ecco l'intestazione del plugin:

Il plug-in avrà una pagina delle impostazioni costituita da un campo modulo che conterrà gli ID di post o di pagina da limitare.

Il codice seguente aggiungerà un sottomenu alle Impostazioni intitolato Restrict content To Registered User .

 add_action ('admin_menu', 'rcru_plugin_menu'); // Aggiunta del sottomenu alle impostazioni function rcru_plugin_menu () {add_options_page ('Limita il contenuto all'utente registrato', 'Limita il contenuto all'utente registrato', 'manage_options', 'rcru-restrict-content-user', 'rcru_content_user_settings'); } 

Il quinto argomento rcru_content_user_settings passato a add_options_page sopra è la funzione che produrrà il contenuto per le impostazioni del plugin.

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

Limita il contenuto all'utente registrato

'; eco '
'; do_settings_sections ( 'rcru-limitare-content-utente'); settings_fields ( 'rcru_settings_group'); submit_button (); }

Il modulo manca del campo e non è ancora in grado di salvare i dati nel database perché non abbiamo ancora implementato l'API delle impostazioni di WordPress.

La funzione plugin_option definisce la sezione e il campo delle impostazioni.

 // campo plugin e sezioni function plugin_option () {add_settings_section ('rcru_settings_section', 'Opzioni plugin', null, 'rcru-restrict-content-user'); add_settings_field ('post-page-id', '  ', 'post_page_field', 'rcru-restrict-content-user', 'rcru_settings_section'); // registra le impostazioni register_setting ('rcru_settings_group', 'rcru_post-id-option'); 

Intendiamoci, il terzo argomento post_page_field passato alla funzione add_settings_field sopra è chiamato per echeggiare il modulo campo.

 function post_page_field () {echo "Inserisci post o ID pagina separati da virgola."; eco '  '; } 

La funzione plugin_option è finalmente agganciata all'azione admin_init per metterla in azione.

 add_action ('admin_init', 'plugin_option'); 

Abbiamo finito con la creazione della pagina delle impostazioni del plugin, ma a che cosa servono i dati salvati dalla pagina delle impostazioni sul database se non verranno utilizzati?

La prossima è la codifica della funzione restrict_content_register_user che recupererà l'ID del post o della pagina per essere limitato ai soli utenti registrati (che sono stati salvati nel database nella pagina delle impostazioni del plugin). Ciò garantisce che l'utente corrente che visualizza il post sia registrato; in caso contrario verrebbe visualizzato un messaggio di errore che indica all'utente di registrarsi.

Infine, la funzione verrà agganciata al filtro_content in modo da influenzare la modifica nel post o nella pagina.

 function restrict_content_register_user ($ content) {global $ post; $ post_database = get_option ('rcru_post-id-option'); $ post_database = explode (', ', $ post_database); $ current_user = wp_get_current_user (); / * Se non ci sono contenuti, ritorno. * / if (is_null ($ content)) restituisce $ content; foreach ($ post_database as $ posts) {$ posts = trim ($ posts); if ($ posts == $ post -> ID) {if (nome_utente_exists ($ utente_utente -> utente_login)) {/ * Restituisce il contenuto privato. * / return $ content; } else {/ * Restituisce un messaggio alternativo. */ ritorno ' 
Devi essere un utente registrato per leggere questo contenuto.
'; }}} restituisce $ content; } add_filter ('the_content', 'restrict_content_register_user');

Ora abbiamo finito con il primo modo in cui funziona il plugin: l'uso della pagina delle impostazioni del plugin.

Ciò che rimane è aggiungere la funzionalità metabox e shortcode al plugin.

Aggiunta di Metabox

Per aggiungere un metabox contenente una casella di controllo nelle schermate di post e di modifica della pagina, sarà possibile limitare la registrazione di quel post o pagina all'utente registrato quando la casella di controllo è spuntata. La funzione rcru_mb_create includerà la meta-box in tutti i post e le pagine quando sarà agganciata all'azione add_meta_boxes .

 function rcru_mb_create () {/ ** * @array $ screens Scrive lo schermo su cui mostrare la meta box * @values ​​post, pagina, dashboard, link, allegato, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ schermi come $ screen) {add_meta_box ('rcru-meta', 'Restrict Post / Page', 'rcru_mb_function', $ screen, 'normal', 'high'); }} add_action ('add_meta_boxes', 'rcru_mb_create'); 

La funzione rcru_mb_function contiene la casella di controllo e la descrizione del metabox.

 function rcru_mb_function ($ post) {// recupera i valori dei metadati se esistono $ restrict_post = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Aggiungi un campo nonce in modo che possiamo verificarlo in seguito durante la convalida di wp_nonce_field ('rcru_inner_custom_box', 'rcru_inner_custom_box_nonce'); eco ' 
Il controllo di questa impostazione limiterà questo post solo agli utenti registrati.
'; }

La funzione rcru_mb_save_data gestisce il controllo di sicurezza e il salvataggio dei valori del modulo nel database.

 function rcru_mb_save_data ($ post_id) {/ * * Abbiamo bisogno di verificare che questo provenga dal nostro schermo e con autorizzazione appropriata, * perché save_post può essere attivato in altri momenti. * / // Controlla se il nostro nonce è impostato. if (! isset ($ _ POST ['rcru_inner_custom_box_nonce'])) restituisce $ post_id; $ nonce = $ _POST ['rcru_inner_custom_box_nonce']; // Verifica che il nonce sia valido. if (! wp_verify_nonce ($ nonce, 'rcru_inner_custom_box')) restituisce $ post_id; // Se si tratta di un salvataggio automatico, il nostro modulo non è stato inviato, quindi non vogliamo fare nulla. if (definito ('DOING_AUTOSAVE') && DOING_AUTOSAVE) restituisce $ post_id; // Controlla le autorizzazioni dell'utente. if ('page' == $ _POST ['post_type']) {if (! current_user_can ('edit_page', $ post_id)) restituisce $ post_id; } else {if (! current_user_can ('edit_post', $ post_id)) restituisce $ post_id; } / * OK, è sicuro per noi salvare i dati ora. * / // Se esistono voci vecchie, recuperale $ old_restrict_post = get_post_meta ($ post_id, '_rcru_restrict_content', true); // Disinstalla l'input dell'utente. $ restrict_post = sanitize_text_field ($ _ POST ['rcru_restrict_content']); // Aggiorna il meta campo nel database. update_post_meta ($ post_id, '_rcru_restrict_content', $ restrict_post, $ old_restrict_post); } // hook per salvare i dati della meta box add_action ('save_post', 'rcru_mb_save_data'); 

La funzione restrict_content_metabox esaminerà un determinato post o pagina per vedere se ha delle restrizioni, controlla se l'utente che legge il post è registrato e mostra un avviso che indica all'utente di registrarsi.

 function restrict_content_metabox ($ content) {global $ post; // recupera i valori dei metadati se esistono $ post_restricted = get_post_meta ($ post -> ID, '_crcru_restrict_content', true); // se il post o la pagina ha restrizioni e l'utente non è registrato // visualizza l'avviso di errore se ($ post_restricted == 1 && (! username_exists (wp_get_current_user () -> user_login)))) {return ' 
Devi essere un utente registrato per leggere questo contenuto.
'; } return $ content; } // aggancia la funzione al contenuto del post per effettuare la modifica add_filter ('the_content', 'restrict_content_metabox');

Aggiungere lo Shortcode

Con lo shortcode, parte di un post può essere limitata solo agli utenti registrati.

La funzione rcru_user_shortcodes contiene la funzione hook shortcode add_shortcode che definisce il tag shortcode [rcru-private] . Il secondo argomento passato a add_shortcode è la funzione di callback chiamata quando lo shortcode è in uso.

 / * Funzione per la registrazione dello shortcode. * / function rcru_user_shortcodes () {/ * Aggiunge lo shortcode [rcru-private]. * / add_shortcode ('rcru-private', 'rcru_shortcode'); } 

La funzione viene quindi registrata per l'azione init modo che venga riconosciuta dagli interni di WordPress.

 / * Registrare gli shortcode in "init". * / add_action ('init', 'rcru_user_shortcodes'); 

Infine, la funzione callback rcru_shortcode gestisce l'output shortcode.

 / * Funzione per la gestione dell'uscita shortcode. * / function rcru_shortcode ($ attr, $ content = '') {/ * Verifica se l'utente corrente ha la capacità 'read_private_content'. * / $ current_reader = wp_get_current_user (); if (! username_exists ($ current_reader -> user_login)) {/ * Restituisce un messaggio alternativo. */ ritorno ' 
Devi essere un utente registrato per leggere questo contenuto.
'; }}

Come funziona il plugin

Il plug-in avrà una pagina delle impostazioni con un campo modulo che accetta gli ID di post e pagina per essere limitato, delimitato da una virgola.

Per limitare un determinato post o pagina, inserisci i rispettivi ID, separati da una virgola (, ) nella campo modulo. Per ottenere l'ID di un post, vai alla schermata di modifica del post (editor TinyMCE per scrivere il contenuto del post) e guarda l'URL della pagina. Il numero aggiunto a ?post= è l'ID post.

Ad esempio, per http://wordpress.dev/wp-admin/post.php?post=88&action=edit, il numero 88 è l'ID del post o della pagina.

Metabox in post e pagina di modifica della pagina

Un post o una pagina può anche essere limitato agli utenti registrati spuntando la casella di controllo Limita contenuto situata nel metabox (aggiunta dal plugin alla schermata di modifica del post).

Codice corto

La parte o la sezione di un post o di un contenuto di una pagina possono essere nascosti dalla visualizzazione pubblica e visualizzati solo ai membri registrati con l'uso di uno shortcode del plugin come questo:

 [rcru-private] Parte del contenuto del post o della pagina deve essere limitata ai soli utenti registrati. [/ rcru-private] 

Infine, ecco un link al file del plugin. Sentiti libero di esplorare il codice e la felice codifica!

Nota del redattore : questo post è stato scritto da Collins Agbonghama per Hongkiat.com. Agbonghama è uno sviluppatore web di giorno e scrittore / blogger freelance di notte. Quando non si litiga con il codice, gli piace molto dormire sul divano e scrivere sul suo blog personale w3guy.com. Puoi trovarlo su Facebook e G +.

WebGradients: una libreria online di oltre 180 gradienti lineari nei CSS

WebGradients: una libreria online di oltre 180 gradienti lineari nei CSS

Con così tanti generatori di codice gratuito sul web è facile creare i propri gradienti. Ma il problema è trovare i colori giusti per abbinare il tuo sito web, il tuo pulsante Click-to-Action o qualsiasi altra cosa tu stia progettando.WebGradients offre una libreria gratuita di sfumature che puoi sfogliare e scovare idee interessanti. Q

(Consigli tecnici e di design)

Automazione: selettori nth-child con Family.scss Mixins

Automazione: selettori nth-child con Family.scss Mixins

Sass è il modo migliore per gestire i moderni CSS e le librerie di mixin possono risparmiare ancora più tempo durante il ciclo di sviluppo.Questi mixin funzionano come codici o funzioni automatici che chiami nei tuoi file Sass principali. Alcuni mix sono più generali mentre altri sono molto specifici come la libreria Family.sc

(Consigli tecnici e di design)