es.hideout-lastation.com
Paraíso Para Los Diseñadores Y Desarrolladores


Cómo restringir el contenido a los usuarios registrados [WP Plugin Tutorial]

En los últimos tiempos, la mayoría de los sitios web de publicación de noticias e información en línea han adoptado el modelo freemium según el cual los lectores que no son miembros registrados se limitan a cierto número de artículos que pueden leer; los usuarios registrados que pagan, por otro lado, tienen acceso ilimitado a los artículos.

En este artículo, le mostraremos cómo crear un complemento simple que le otorgue al administrador de un sitio con WordPress la capacidad de restringir ciertas publicaciones, páginas y parte del contenido de una publicación únicamente a usuarios registrados.

Codificando el complemento

Al escribir un plugin de WordPress, la sección del encabezado (un bloque de comentarios de PHP) contiene información como el nombre, la descripción, el autor y la URL del autor del complemento. Aquí está el encabezado del complemento:

El complemento tendrá una página de configuración que constará de un campo de formulario que contendrá los ID de publicación o página que se restringirán.

El siguiente código agregará un submenú a la Configuración titulada Restrict content To Registered User .

 add_action ('admin_menu', 'rcru_plugin_menu'); // Agregar el submenú a la función de configuración rcru_plugin_menu () {add_options_page ('Restringir contenido a usuario registrado', 'Restringir contenido a usuario registrado', 'opciones de administración', 'rcru-restringir-usuario-contenido', 'rcru_content_user_settings'); } 

El quinto argumento rcru_content_user_settings pasado a add_options_page arriba es la función que generará el contenido para la configuración del complemento.

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

Restringir contenido a usuarios registrados

'; eco '
'; do_settings_sections ('rcru-restrict-content-user'); settings_fields ('rcru_settings_group'); botón de enviar(); }

La forma no tiene el campo y aún no es capaz de guardar datos en la base de datos porque todavía tenemos que implementar la API de configuración de WordPress.

La función plugin_option define la sección y el campo de configuración.

 // campo de plugin y función de secciones plugin_option () {add_settings_section ('rcru_settings_section', 'Opciones de Plugin', nulo, 'rcru-restringe-content-user'); add_settings_field ('post-page-id', 'Publicación  ', 'post_page_field', 'rcru-restrict-content-user', 'rcru_settings_section'); // registra la configuración register_setting ('rcru_settings_group', 'rcru_post-id-option'); 

post_page_field, el tercer argumento post_page_field pasado a la función add_settings_field anterior se llama para hacer eco del formulario campo.

 function post_page_field () {echo "Ingrese la ID de publicación o de página separada por comas."; eco '  '; } 

La función plugin_option finalmente se engancha a la acción admin_init para ponerla en acción.

 add_action ('admin_init', 'plugin_option'); 

Hemos terminado con la creación de la página de configuración del complemento, pero ¿de qué sirve la información guardada por la página de configuración en la base de datos si no se va a utilizar?

A continuación está la codificación de la función restrict_content_register_user que recuperará la publicación o la identificación de la página que se limitará solo a usuarios registrados (que se guardó en la base de datos en la página de configuración de complementos). Esto asegura que el usuario actual que está viendo la publicación esté registrado; de lo contrario, se mostrará un mensaje de error que le indicará al usuario que se registre.

Finalmente, la función se enganchará al filtro de contenido para afectar el cambio en la publicación o página.

 function restric_content_register_user ($ contenido) {global $ post; $ post_database = get_option ('rcru_post-id-option'); $ post_database = explode (', ', $ post_database); $ current_user = wp_get_current_user (); / * Si no hay contenido, regresa. * / if (is_null ($ content)) return $ content; foreach ($ post_database as $ posts) {$ posts = trim ($ posts); if ($ posts == $ post -> ID) {if (username_exists ($ current_user -> user_login)) {/ * Devuelve el contenido privado. * / return $ contenido; } else {/ * Devuelve un mensaje alternativo. */ regreso ' 
Debe ser un usuario registrado para leer este contenido.
'; }}} devuelve $ contenido; } add_filter ('the_content', 'restrict_content_register_user');

Ya hemos terminado con la primera forma en que funciona el complemento: el uso de la página de configuración del complemento.

Lo que queda es agregar la función metabox y shortcode al plugin.

Agregar Metabox

Para agregar un metabox que contenga una casilla de verificación en las pantallas de publicación y de edición de página, se permitirá la restricción de esa publicación o página al usuario registrado cuando la casilla esté marcada. La función rcru_mb_create incluirá el cuadro meta en todas las publicaciones y páginas cuando se enganche a la acción add_meta_boxes .

 function rcru_mb_create () {/ ** * @array $ screens Pantalla de escritura en la que se muestra el meta box * @values ​​publicación, página, panel de control, enlace, archivo adjunto, custom_post_type * / $ screens = array ('post', 'page' ); foreach ($ pantallas como $ pantalla) {add_meta_box ('rcru-meta', 'Restringir publicación / página', 'rcru_mb_function', $ pantalla, 'normal', 'alta'); }} add_action ('add_meta_boxes', 'rcru_mb_create'); 

La función rcru_mb_function contiene la casilla de verificación y la descripción de la metabox.

 function rcru_mb_function ($ post) {// recupera los valores de los metadatos si existen $ restriction_post = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // Agregamos un campo nonce para que podamos verificarlo más adelante al validar wp_nonce_field ('rcru_inner_custom_box', 'rcru_inner_custom_box_nonce'); eco ' 
Al marcar esta configuración, restringiremos esta publicación solo a usuarios registrados.
'; }

La función rcru_mb_save_data maneja la comprobación de seguridad y el guardado de los valores de formulario en la base de datos.

 function rcru_mb_save_data ($ post_id) {/ * * Necesitamos verificar que esto vino de nuestra pantalla y con la autorización apropiada, * porque save_post puede activarse en otros momentos. * / // Verifica si nuestro nonce está configurado. if (! isset ($ _ POST ['rcru_inner_custom_box_nonce'])) return $ post_id; $ nonce = $ _POST ['rcru_inner_custom_box_nonce']; // Verifica que el nonce sea válido. if (! wp_verify_nonce ($ nonce, 'rcru_inner_custom_box')) return $ post_id; // Si se trata de un autoguardado, nuestro formulario no se ha enviado, por lo que no queremos hacer nada. if (defined ('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $ post_id; // Verifica los permisos del usuario. if ('page' == $ _POST ['post_type']) {if (! current_user_can ('edit_page', $ post_id)) return $ post_id; } else {if (! current_user_can ('edit_post', $ post_id)) return $ post_id; } / * OK, es seguro para nosotros guardar los datos ahora. * / // Si existen entradas antiguas, recupérelas $ old_restrict_post = get_post_meta ($ post_id, '_rcru_restrict_content', true); // Sanitiza la entrada del usuario. $ restrict_post = sanitize_text_field ($ _ POST ['rcru_restrict_content']); // Actualizar el meta campo en la base de datos. update_post_meta ($ post_id, '_rcru_restrict_content', $ restrict_post, $ old_restrict_post); } // hook para guardar los datos del cuadro meta add_action ('save_post', 'rcru_mb_save_data'); 

La función restrict_content_metabox examinará una publicación o página determinada para ver si tiene restricciones, verifica si el usuario que lee la publicación está registrado y muestra un aviso que le indica al usuario que se registre.

 función restrict_content_metabox ($ contenido) {global $ post; // recuperar los valores de los metadatos si existen $ post_restricted = get_post_meta ($ post -> ID, '_rcru_restrict_content', true); // si la publicación o página tiene restricciones y el usuario no está registrado // muestra el aviso de error si ($ post_restricted == 1 && (! username_exists (wp_get_current_user () -> user_login))) {return ' 
Debe ser un usuario registrado para leer este contenido.
'; } devolver $ contenido; } // enganchar la función al contenido de la publicación para efectuar el cambio add_filter ('the_content', 'restrict_content_metabox');

Agregar el código corto

Con el código abreviado, parte de una publicación puede restringirse solo a usuarios registrados.

La función rcru_user_shortcodes contiene la función shortcode hook add_shortcode que define la etiqueta shortcode [rcru-private] . El segundo argumento pasado a add_shortcode es la función de devolución de llamada que se add_shortcode cuando el shortcode está en uso.

 / * Función para registrar el código corto. * / function rcru_user_shortcodes () {/ * Agrega el código corto [rcru-private]. * / add_shortcode ('rcru-private', 'rcru_shortcode'); } 

La función luego se registra para init acción, de modo que será reconocida por WordPress internal.

 / * Registrar códigos cortos en 'init'. * / add_action ('init', 'rcru_user_shortcodes'); 

Finalmente, la función de devolución de llamada rcru_shortcode maneja la salida shortcode.

 / * Función para manejar la salida de shortcode. * / function rcru_shortcode ($ attr, $ content = '') {/ * Verifica si el usuario actual tiene la capacidad 'read_private_content'. * / $ current_reader = wp_get_current_user (); if (! username_exists ($ current_reader -> user_login)) {/ * Devuelve un mensaje alternativo. */ regreso ' 
Debe ser un usuario registrado para leer este contenido.
'; }}

Cómo funciona el complemento

El complemento tendrá una página de configuración con un campo de formulario que aceptará las identidades de publicación y de página restringidas, delimitadas por una coma.

Para restringir una publicación o página determinada, ingrese sus respectivos ID, separados por una coma (, ) en el campo de formulario. Para obtener la ID de una publicación, vaya a la pantalla de edición de publicaciones (editor TinyMCE para escribir contenido de la publicación) y observe la URL de la página. El número adjunto a ?post= es la identificación de la publicación.

Por ejemplo, para http://wordpress.dev/wp-admin/post.php?post=88&action=edit, el número 88 es la publicación o la identificación de la página.

Metabox en la pantalla de edición de publicación y página

Una publicación o página también se puede restringir a los usuarios registrados marcando la casilla de verificación Restringir contenido ubicada en la metatapa (agregada por el complemento a la pantalla de edición de la publicación).

Código corto

Parte o la sección de una publicación o contenido de la página puede ocultarse a la vista pública y mostrarse solo a los miembros registrados con el uso de un código corto de plugin como este:

 [rcru-private] Parte del contenido de la publicación o página está restringido solo a usuarios registrados. [/ rcru-private] 

Por último, aquí hay un enlace al archivo de complemento. ¡Siéntete libre de explorar el código y la feliz codificación!

Nota del editor : Esta publicación está escrita por Collins Agbonghama para Hongkiat.com. Agbonghama es un desarrollador web de día y escritor / bloguero independiente por la noche. Cuando no está discutiendo con el código, le gusta dormir en el sofá y escribir en su blog personal w3guy.com. Puedes encontrarlo en Facebook y G +.

Cómo agregar accesos directos de teclado a su sitio web

Cómo agregar accesos directos de teclado a su sitio web

¿Te gustan los atajos de teclado? Pueden ayudarte a ahorrar mucho tiempo, ¿verdad? ¿Le gustaría agregar atajos de teclado a su propio sitio web, para el beneficio de sus visitantes? Mejorará en gran medida la accesibilidad y navegación de su sitio.En esta publicación, daré una guía rápida sobre cómo agregar atajos a su página web usando una biblioteca de JavaScript llamada Mousetrap. Con Mouset

(Consejos de tecnología y diseño)

Ventajas de la pluma y el papel antes de diseñar en la computadora

Ventajas de la pluma y el papel antes de diseñar en la computadora

Cuéntame, ¿cuándo fue la última vez que escribiste usando lápiz y papel? No es sorprendente saber que rara vez los usa, ya que estamos entrando en la era digital cuando las tecnologías como la computadora portátil y la tableta florecen en todo el mundo. Sin embargo, el hecho crucial aquí es que usar lápiz y papel es definitivamente más eficiente que usar una computadora cuando se trata de dibujar, escribir, diseñar, cualquier actividad que involucre una lluvia de ideas .Es seguro

(Consejos de tecnología y diseño)