hideout-lastation.com
Paradis Pour Les Concepteurs Et Les Développeurs


Comment restreindre le contenu aux utilisateurs enregistrés [WP Plugin Tutorial]

Ces derniers temps, la plupart des sites de publication de nouvelles et d'informations en ligne ont adopté le modèle freemium selon lequel les lecteurs qui ne sont pas membres enregistrés sont limités à un certain nombre d'articles qu'ils peuvent lire; payant, les utilisateurs enregistrés, d'autre part, ont un accès illimité aux articles.

Dans cet article, nous allons vous montrer comment créer un plugin simple qui donne à l'administrateur d'un site alimenté par WordPress la possibilité de restreindre certains messages, pages et parties d'un contenu de publication à des utilisateurs enregistrés uniquement.

Coder le plugin

Lors de l'écriture d'un plugin WordPress, la section header (un bloc de commentaires PHP) contient des informations telles que le nom, la description, l'auteur et l'URL de l'auteur du plugin. Voici l'en-tête du plugin:

Le plugin aura une page de paramètres composée d'un champ de formulaire qui contiendra les numéros de poste ou de page à restreindre.

Le code ci-dessous ajoutera un sous-menu aux paramètres intitulé Restrict content To Registered User .

 add_action ('admin_menu', 'rcru_plugin_menu'); // Ajouter un sous-menu aux paramètres function rcru_plugin_menu () {add_options_page ('Restreindre le contenu à l'utilisateur enregistré', 'Restreindre le contenu à l'utilisateur enregistré', 'manage_options', 'rcru-restrict-content-user', 'rcru_content_user_settings'); } 

Le cinquième argument rcru_content_user_settings passé à add_options_page ci-dessus est la fonction qui va afficher le contenu pour les paramètres du plugin.

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

Restreindre le contenu à l'utilisateur enregistré

'; écho '
'; do_settings_sections ('rcru-restrict-content-user'); settings_fields ('rcru_settings_group'); bouton de soumission(); }

Le formulaire n'a pas le champ et il n'est pas encore capable de sauvegarder des données dans la base de données, car nous devons encore implémenter l'API des paramètres WordPress.

La fonction plugin_option définit la section et le champ des paramètres.

 // plugin field et sections function plugin_option () {add_settings_section ('rcru_settings_section', 'Options du plugin', null, 'rcru-restrict-content-user'); add_settings_field ('post-page-id', '  ', 'post_page_field', 'rcru-restrict-content-user', 'rcru_settings_section'); // enregistrer les paramètres register_setting ('rcru_settings_group', 'rcru_post-id-option'); 

post_page_field vous, le troisième argument post_page_field passé à la fonction add_settings_field ci-dessus est appelé pour add_settings_field le formulaire champ.

 function post_page_field () {echo "Entrez l'identifiant de poste ou de page séparé par une virgule."; écho '  '; } 

La fonction plugin_option est enfin accrochée à l'action admin_init pour la mettre en action.

 add_action ('admin_init', 'plugin_option'); 

Nous avons terminé la construction de la page des paramètres du plugin, mais à quoi servent les données sauvegardées par la page des paramètres dans la base de données si elles ne sont pas utilisées?

Vient ensuite le codage de la fonction restrict_content_register_user qui récupérera l'identifiant de publication ou de page à restreindre aux seuls utilisateurs enregistrés (qui ont été enregistrés dans la base de données dans la page des paramètres du plugin). Cela garantit que l'utilisateur actuel qui consulte le message est enregistré; sinon, un message d'erreur indiquant à l'utilisateur de s'inscrire serait affiché.

Enfin, la fonction sera accrochée au filtre the_content de manière à affecter le changement dans la publication ou la page.

 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 (); / * S'il n'y a pas de contenu, retournez. * / if (is_null ($ content)) renvoie $ content; foreach ($ post_database en $ posts) {$ posts = trim ($ posts); if ($ posts == $ post -> ID) {if (nom_utilisateur_exists ($ current_user -> user_login)) {/ * Retourne le contenu privé. * / return $ content; } else {/ * Renvoie un autre message. */ revenir ' 
Vous devez être un utilisateur enregistré pour lire ce contenu.
'; }}} return $ content; } add_filter ('the_content', 'restrict_content_register_user');

Nous avons terminé avec le premier fonctionnement du plugin: l'utilisation de la page des paramètres du plugin.

Ce qui reste est d' ajouter la métabox et la fonction shortcode au plugin.

Ajouter Metabox

Pour ajouter une métabox contenant une case à cocher dans les écrans d'édition de page et de page, vous autorisez la restriction de ce post ou de cette page à l'utilisateur enregistré lorsque la case est cochée. La fonction rcru_mb_create inclura la méta-boîte dans tous les messages et pages lorsqu'elle est accrochée à l'action add_meta_boxes .

 function rcru_mb_create () {/ ** * @array $ screens Écran d'écriture sur lequel afficher la méta-box * @values ​​post, page, tableau de bord, lien, pièce jointe, custom_post_type * / $ screens = array ('post', 'page' ) foreach ($ screens comme $ screen) {add_meta_box ('rcru-meta', 'Restreindre Post / Page', 'rcru_mb_function', $ screen, 'normal', 'high'); }} add_action ('add_meta_boxes', 'rcru_mb_create'); 

La fonction rcru_mb_function contient la case à cocher et la description de la métabox.

 function rcru_mb_function ($ post) {// récupère les valeurs de métadonnées si elles existent $ restrict_post = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Ajoute un champ de nonce pour que nous puissions le vérifier plus tard lors de la validation de wp_nonce_field ('rcru_inner_custom_box', 'rcru_inner_custom_box_nonce'); écho ' 
La vérification de ce paramètre limitera cette publication aux seuls utilisateurs enregistrés.
'; }

La fonction rcru_mb_save_data gère le contrôle de sécurité et l'enregistrement des valeurs de formulaire dans la base de données.

 function rcru_mb_save_data ($ post_id) {/ * * Nous devons vérifier que cela vient de notre écran et avec l'autorisation appropriée *, car save_post peut être déclenché à d'autres moments. * / // Vérifie si notre nonce est défini. if (! isset ($ _ POST ['rcru_inner_custom_box_nonce'])) renvoie $ post_id; $ nonce = $ _POST ['rcru_inner_custom_box_nonce']; // Vérifie que le nonce est valide. if (! wp_verify_nonce ($ nonce, 'rcru_inner_custom_box')) renvoie $ post_id; // S'il s'agit d'une sauvegarde automatique, notre formulaire n'a pas été envoyé, donc nous ne voulons rien faire. if (defined ('DOING_AUTOSAVE') && DOING_AUTOSAVE) renvoie $ post_id; // Vérifie les permissions de l'utilisateur. if ('page' == $ _POST ['post_type']) {if (! current_user_can ('edit_page', $ post_id)) retourne $ post_id; } else {if (! current_user_can ('edit_post', $ post_id)) retourne $ post_id; } / * OK, c'est sûr pour nous d'enregistrer les données maintenant. * / // Si d'anciennes entrées existent, récupérez-les $ old_restrict_post = get_post_meta ($ post_id, '_rcru_restrict_content', true); // Désinfecter l'entrée de l'utilisateur. $ restrict_post = sanitize_text_field ($ _ POST ['rcru_restrict_content']); // Met à jour le champ Meta dans la base de données. update_post_meta ($ post_id, '_rcru_restrict_content', $ restrict_post, $ old_restrict_post); } // hook pour sauvegarder les données de la méta add_action ('save_post', 'rcru_mb_save_data'); 

La fonction restrict_content_metabox examinera un message ou une page pour voir s'il y a des restrictions, vérifiera si l'utilisateur qui lit le message est enregistré et affichera un avis indiquant à l'utilisateur de s'enregistrer.

 function restrict_content_metabox ($ content) {global $ post; // récupère les valeurs de métadonnées si elles existent $ post_restricted = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // si l'article ou la page a une restriction et que l'utilisateur n'est pas enregistré // affiche l'avis d'erreur if ($ post_restricted == 1 && (! username_exists (wp_get_current_user () -> user_login))) {return ' 
Vous devez être un utilisateur enregistré pour lire ce contenu.
'; } return $ content; } // accroche la fonction au contenu du message pour effectuer le changement add_filter ('the_content', 'restrict_content_metabox');

Ajouter le shortcode

Avec le shortcode, une partie d'un message peut être limitée aux seuls utilisateurs enregistrés.

La fonction rcru_user_shortcodes contient la fonction de hook add_shortcode qui définit la balise [rcru-private] . Le deuxième argument passé à add_shortcode est la fonction de rappel qui est appelée lorsque le shortcode est utilisé.

 / * Fonction pour enregistrer le shortcode. * / function rcru_user_shortcodes () {/ * Ajoute le shortcode [rcru-private]. * / add_shortcode ('rcru-private', 'rcru_shortcode'); } 

La fonction est ensuite enregistrée dans l'action init pour être reconnue par les internes de WordPress.

 / * Enregistrer les shortcodes dans 'init'. * / add_action ('init', 'rcru_user_shortcodes'); 

Enfin, la fonction de rappel rcru_shortcode gère la sortie du shortcode.

 / * Fonction pour gérer la sortie de shortcode. * / function rcru_shortcode ($ attr, $ content = '') {/ * Vérifie si l'utilisateur actuel a la capacité 'read_private_content'. * / $ current_reader = wp_get_current_user (); if (! username_exists ($ current_reader -> user_login)) {/ * Renvoie un autre message. */ revenir ' 
Vous devez être un utilisateur enregistré pour lire ce contenu.
'; }}

Comment fonctionne le plugin

Le plugin aura une page de paramètres avec un champ de formulaire qui accepte les postes et les pages à restreindre, délimité par une virgule.

Pour restreindre un article ou une page, entrez leurs identifiants respectifs, séparés par une virgule (, ) dans le champ de formulaire. Pour obtenir l'ID d'un message, accédez à l'écran d'édition de message (éditeur TinyMCE pour rédiger le contenu d'une publication) et consultez l'URL de la page. Le numéro ajouté à ?post= est l'identifiant du message.

Par exemple, pour http://wordpress.dev/wp-admin/post.php?post=88&action=edit, le numéro 88 est l'identifiant de publication ou de page.

Metabox dans l'écran de modification de la page et de la page

Une publication ou une page peut également être limitée aux utilisateurs enregistrés en cochant la case Restreindre le contenu située dans la métabox (ajoutée par le plugin à l' écran d'édition de post).

Petit code

La partie ou la section d'un article ou d'un contenu de page peut être masquée de la vue publique et affichée uniquement aux membres enregistrés avec l'utilisation d'un code court de plug-in comme ceci:

 [rcru-private] Une partie du contenu de la publication ou de la page doit être réservée aux seuls utilisateurs enregistrés. [/ rcru-private] 

Enfin, voici un lien vers le fichier plugin. N'hésitez pas à explorer le code et le codage heureux!

Note de l'éditeur : Ce billet est écrit par Collins Agbonghama pour Hongkiat.com. Agbonghama est un développeur web de jour et écrivain indépendant / blogueur de nuit. Lorsqu'il ne se dispute pas avec le code, il aime dormir sur le canapé et écrire sur son blog personnel w3guy.com. Vous pouvez le trouver sur Facebook et G +.

Facebook implique des vérificateurs de faits tiers pour examiner ses nouvelles

Facebook implique des vérificateurs de faits tiers pour examiner ses nouvelles

Contenu curated et un système d'enquête ne sont que la pointe de l'iceberg proverbiale dans les tentatives de Facebook de sévir contre les fausses nouvelles . La société de médias sociaux fait maintenant appel à des organismes tiers de vérification des faits pour aider à identifier les fausses nouvelles avant qu'elles ne deviennent virales.Récemmen

(Conseils techniques et de conception)

Mise en page de la grille CSS: Comment utiliser minmax ()

Mise en page de la grille CSS: Comment utiliser minmax ()

Le CSS Grid Layout Module prend la conception sensible au niveau suivant en introduisant un nouveau type de flexibilité qui n'a jamais été vu auparavant. Maintenant, nous pouvons non seulement définir des grilles personnalisées avec rapidité uniquement avec du CSS pur, mais le CSS Grid a aussi beaucoup de gemmes cachées qui nous permettent de modifier la grille et d'obtenir des mises en page compliquées.La fonc

(Conseils techniques et de conception)