Complemento simple de WordPress para seguir a tus autores favoritos

La increíble tasa de crecimiento de WordPress ha simplificado el desarrollo de sitios web. Los sitios de tutoriales populares como la red Tuts + usan WordPress para potenciar sus sitios web. Estos sitios web proporcionan cientos de nuevos tutoriales, artículos y actualizaciones diarias. Por lo tanto, no es fácil realizar un seguimiento de todos los artículos, incluso con su lector de RSS. Su lector de feeds se llenará de nuevos rápidamente y, como lectores, solo nos interesan ciertos temas. Así que idealmente necesitaríamos un método que provea artículos que nos interesen. Generalmente los autores se especializan en áreas específicas. Si Darren Rowse escribe un artículo sobre blogs, todos querrán leerlo. Igualmente tenemos autores favoritos que nos gustaría leer cada vez..

Así que en este tutorial voy a crear un complemento simple de WordPress que te permite suscribirte a tus autores favoritos. Recibirás un correo electrónico cada vez que tu autor favorito publique una publicación. Por eso no volverás a perderte los importantes artículos..


¿Qué estamos desarrollando hoy?

Básicamente, nuestro complemento permitirá a los usuarios recibir notificaciones sobre nuevas publicaciones de los autores suscritos. Las siguientes son las características y componentes que desarrollaremos durante el tutorial:

  • Creando un Shortcode para listar todos los autores
  • Permitiendo a los usuarios seguir y dejar de seguir a los autores.
  • Enviar correos electrónicos cuando se publique una nueva publicación.

Paso 1 Creando el archivo de complemento

No voy a explicar este paso en detalle, ya que es posible que sepa que un archivo de complemento de WordPress debe tener una sección de comentarios en la parte superior para identificar los detalles del complemento. He nombrado el plugin WP Seguir a los Autores. Así que crea un nuevo directorio en el / wp-content / plugins directorio llamado wp-seguir-autores y crea el index.php archivo con los siguientes detalles:

 

Paso 2 Creando tablas en la activación del complemento

Necesitamos dos tablas de base de datos para este complemento. Los estoy nombrando wp_author_subscribe y wp_author_followers (dónde wp_ será en realidad el prefijo db configurado). La mesa wp_author_subscribe mantendrá el correo electrónico de los suscriptores, el estado de activación y la lista de autores seguidos. los wp_author_followers La tabla contendrá la identificación del autor y la lista de seguidores. Necesitamos crear estas tablas en la activación del plugin. Así que consideremos el siguiente código.

 consulta ("DROP TABLE IF EXISTS $ wpdb-> prefix author_subscribe"); $ sql1 = "CREATE TABLE $ wpdb-> prefix author_subscribe (id int (11) NOT NULL AUTO_INCREMENT, activation_code varchar (255) NOT NULL, correo electrónico varchar (75) NOT NULL, estado int (11) NOT NULL, follow_authors text NO NULO, TECLA PRINCIPAL (id)) MOTOR = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ sql2 = ("CREATE TABLE $ wpdb-> prefix author_followers (id int (11) NOT NULL AUTO_INCREMENT, author_id int (11) NOT NULL, followers_list text NOT NULL, TECLA PRIMARIA (id)) MOTOR = InnoDB AUTO_INCREMENT = 1 "); dbDelta ($ sql2);  register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
  • Podemos crear una función para ser llamada en la activación del plugin usando registro_activación_hook. Aquí es donde debemos crear nuestras tablas de base de datos..
  • Las tablas de la base de datos se pueden crear utilizando una consulta personalizada de WordPress. Pero la forma recomendada es usar el dbDelta función para ejecutar la consulta SQL como se muestra en el código anterior.

Paso 3 Shortcode para mostrar la lista de autores

Luego debemos mostrar la lista de autores disponibles para que los usuarios la sigan. Así que crearé un código corto que te permita mostrar la lista de autores en cualquier página. Vamos a empezar a crear el shortocde..

 

He creado un shortcode llamado contribuyentes y una función llamada contribuyentes para visualizar la lista de autores. Todo el código relacionado con la visualización de los autores se encuentra dentro de esta función. Tienes que crear una página especial para mostrar a tus colaboradores. Puedes nombrarlo como quieras que sea. Luego coloca el código corto [colaboradores] Dentro de la página y haga clic en el botón publicar. Todavía no tenemos ningún código dentro de la función de código corto. Así que echemos un vistazo a eso.

Mostrar lista de autores

Algunos blogs permiten a los usuarios registrarse. Se crearán como suscriptores en general y los suscriptores no pueden crear publicaciones. Entonces, cuando mostramos la lista de usuarios, debemos asegurarnos de que los usuarios tengan la capacidad de crear publicaciones. Veamos el siguiente código..

 '; foreach ($ autores como $ autor) si (usuario_can ($ autor-> ID, 'publish_posts')) $ authorsList. = '
'. get_avatar ($ autor-> ID). '

'. get_the_author_meta ('display_name', $ author-> ID). '

'. get_the_author_meta ('description', $ author-> ID). '

'; $ authorsList. = '
'; ?>
  • Obtenemos a todos los usuarios utilizando el obtener_usuarios función.
  • Luego, mientras recorre la lista de usuarios, debemos comprobar si el usuario tiene permiso para publicar publicaciones utilizando el usuario_can función.
  • Creamos código HTML para detalles de los autores que pueden publicar publicaciones. He mostrado la imagen del autor usando gravatar, nombre y descripción del autor..
  • A continuación creamos un botón para seguir a los autores. Lo importante aquí es que he especificado un autor de datos atribuye y establece el ID del autor.

Ahora tenemos el código HTML para mostrar los autores. Así que veamos el código para mostrar el formulario de suscripción.

  
Sigue a los autores de WP
'. $ actStatus. '
Introduce tu correo electrónico
'. $ autoresLista. '
'; echo $ output; ?>

En este sencillo formulario HTML, tenemos un campo de texto para que un usuario ingrese su dirección de correo electrónico. Luego tenemos 2 botones para suscribirnos y cargar la lista de autores seguidos. Usaré AJAX a lo largo de este plugin. Así que el ID y las clases de elementos HTML juegan un papel vital. Si verifica el archivo del complemento real, notará que no he explicado el código en la parte superior de la contribuyentes función. Se utiliza para verificar la activación y se explicará más adelante. Ahora tenemos el formulario completo con la lista de autores y se verá como la imagen del tutorial que se muestra en la parte superior.


Paso 4 Configurando JavaScript y CSS

Ahora comienza la parte de la funcionalidad real y necesitamos algunos estilos CSS y archivos Javascript para admitir nuestra funcionalidad. Por lo tanto, el siguiente código le mostrará cómo incluir los scripts y estilos necesarios de la manera recomendada..

  admin_url ('admin-ajax.php'), 'ajaxNonce' => wp_create_nonce ('follow-nonce'), 'currentURL' => $ _SERVER ['REQUEST_URI']); wp_localize_script ('followjs', 'ajaxData', $ config_array);  add_action ('wp_enqueue_scripts', 'apply_wp_author_scripts'); ?>

Paso 5 Suscríbete a Plugin

Para seguir a los autores, un usuario debe suscribirse utilizando su correo electrónico. Una vez que un usuario ingrese su correo electrónico y haga clic en el botón Suscribirse, se suscribirá al servicio y se enviará un correo electrónico para activar el servicio. A ver qué pasa cuando se hace clic en el botón de suscripción..

Creación de una solicitud de suscripción a AJAX

 

He adjuntado una función jQuery usando el evento en vivo que se llamará cuando el botón Suscribir (#subscribeAuthors) se hace clic. Comprueba si el correo electrónico es válido usando una expresión regular. Luego creamos la solicitud AJAX para llamar a la función de suscripción. Explicaré la solicitud de AJAX aquí..

Manejo de la solicitud de AJAX en WordPress

Para manejar las solicitudes AJAX desde el complemento, podemos usar el siguiente código:

 

Hay acciones llamadas wp_ajax_nopriv y wp_ajax para manejar las solicitudes AJAX para los usuarios que han cerrado sesión y han iniciado sesión respectivamente. Estas acciones son seguidas por un guión bajo y la acción que definimos en la solicitud AJAX del archivo JS. Así que en este caso el subscribe_to_wp_authors la acción llamará al subscribe_to_wp_authors función.

"Asegúrate de usar morir() al final de cada función AJAX en su código PHP desde que WordPress regresa 0 o -1 dependiendo del resultado de la solicitud AJAX que podría causar errores en las cadenas JSON ".

Veamos que pasa dentro de la función:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe donde email =% s", $ subscriber_email)); if (count ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> prepare ("INSERT INTO $ wpdb-> prefix autor_subscribe (correo electrónico, código de activación, estado) VALORES (% s,% s,% s)", $ subscriber_email, $ código_activación, "sin suscripción")); $ activation_link = add_query_arg ('confirm-follow', $ activation_code, get_site_url (). $ _POST ['url']); if ($ result) if (wp_mail ($ subscriber_email, "WP Author Subscription", "Haga clic en $ activation_link para activar.")) echo json_encode (array ("success" => "Por favor revise el correo electrónico para el enlace de activación.") );  else echo json_encode (array ("error" => "Email Error.)));  else else echo json_encode (array ("error" => "El correo electrónico ya existe."));  else else echo json_encode (array ("error" => "Introduzca un correo electrónico válido"));  die (); ?>

Luego, una vez que el usuario haga clic en el enlace de activación en el correo electrónico, será dirigido de regreso al sitio web con un mensaje de activación exitosa y su dirección de correo electrónico se cargará en el cuadro de texto. La verificación de activación se realiza en la parte superior de la función de shortcode. Omití la explicación anterior, ahora es el momento de echar un vistazo a ese código en el contribuyentes función.

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe donde activation_code =% s y status = 0"), $ activationCode); if (count ($ activationCheck)! = 0) $ activationResult = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefix author_subscribe establece el estado = 1 donde activation_code =% s"), $ código de activación); if ($ activationResult) $ confirmarEmail = $ activationCheck [0] -> email; $ actStatus = "Activation Successfull"; $ actClass = "éxito";  else $ actStatus = "Error de activación"; $ actClass = "error"; ?>

Un usuario puede visitar la página de los autores directamente o mediante el enlace de confirmación. Así que primero comprobamos si el confirmar-seguir El parámetro está disponible en la URL para averiguar si se trata de una solicitud de activación o no. Luego buscamos una activación en la tabla de la base de datos para el código de activación proporcionado en la URL. Luego actualizamos el estado de activación del usuario y mostramos el mensaje de resultados con la clase de CSS relativa. Ahora se completa todo el proceso de suscripción. Ahora el usuario puede comenzar a seguir a los autores..


Paso 6 Siguiendo Autores

Ahora la activación es exitosa y su correo electrónico se muestra en el cuadro de correo electrónico. Este es el momento en el que puede elegir autores de la lista y hacer clic en "Seguir" botón. Veamos cómo hacer que un usuario siga a un autor. Se hará una solicitud de AJAX tan pronto como haga clic en el botón de seguimiento de un autor específico.

 

Cada autor tiene un botón de seguimiento delante de su nombre que contiene una clase de CSS llamada seguir. Así que cada vez que se hace clic en un botón de seguir, $ jq (". follow"). live ("click") La función se activará y solo podemos hacer clic en el botón pulsado. $ jq (esto). Luego hacemos una nueva solicitud AJAX como antes con la acción follow_wp_authors.

La única diferencia aquí es que agregamos un parámetro adicional llamado autor_id a la solicitud. Podemos obtener la identificación del autor usando el autor de datos Atributo que definimos en la sección de visualización. Ahora echemos un vistazo al código PHP para manejar esta solicitud AJAX.

 

Tenemos que agregar dos nuevas acciones para esta solicitud AJAX como hicimos anteriormente. La función follow_up_authors contendrá el código utilizado para seguir a un autor. Como no tiene sentido explicar el código repetitivo una y otra vez, voy a explicar las secciones que son necesarias. Así que te sugiero que mires la función en el archivo del complemento mientras lees el tutorial. La parte inicial de la función verificará el nonce, validará el correo electrónico y verificará la activación en la base de datos. Así que avancemos.

Agregando usuarios para seguir

Dado que estamos utilizando tablas personalizadas en nuestro complemento, incluso si hay muchos autores disponibles en el sitio, nuestra tabla de autores estará inicialmente vacía. Entonces, cuando un usuario hace clic en el botón Seguir de un autor, podemos verificar si el autor está disponible en nuestra tabla. Si no, hacemos la entrada inicial insertando el autor en la tabla. Considere el siguiente código:

 carné de identidad; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Marque si existe author e insértelo si no está disponible para seguir * / $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare (" select * from $ wpdb- > prefijo autor_followers donde author_id =% d "), $ authorId); if (count ($ authorResult) == '0') $ result = $ wpdb-> query ($ wpdb-> prepare (" INSERT INTO $ wpdb-> prefix author_followers (author_id) VALUES (% d) ", $ authorId));?>

Recepción de usuarios seguidos de la lista de autores

 follow_authors; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explode (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in ( $ subsiredAuthorList, $ authorId);?>

Recepción de autores Lista de seguidores y finalización de seguimiento

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers donde author_id =% d"), $ authorId); if (count ($ authorResult) == '1') if ($ authorResult [0] -> followers_list! = ") $ authorSubscribersArray = explode (", ", $ authorResult [0] -> followers_list); else $ authorSubscribersArray = array (); if (! (in_array ($ subscriberID, $ authorSubscribersArray))) array_push ($ authorSubscribersArray, $ subscriberID); // Lista de usuarios que sigue al autor específico $ followersList = implode ("," , $ authorSubscribersArray); // Lista de autores seguida del usuario específico $ subscribedAuthorList = implode (",", $ subscribedAuthorList); $ result = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefix author_followers establece followers_list =% s donde author_id =% d "), $ followersList, $ authorId); $ result = $ wpdb-> query ($ wpdb-> prepare (" update $ wpdb-> prefix author_subscribe set seguido_autores =% s donde email =% s "), $ subscribedAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" success "));?>

Paso 7 Dejar de seguir a los autores

Para que este complemento sea efectivo, es posible que los usuarios deban tener la función para dejar de seguir a los autores y seguir a los autores en cualquier momento. Te explico el proceso de dejar de seguir a un autor. Como es muy similar al siguiente proceso, omitiré códigos repetitivos en la explicación..

El botón en línea con todos los autores seguidos se mostrará como Siguiendo. Cuando se desplaza sobre el botón, el texto cambiará a un color diferente Dejar de seguir. Al hacer clic en el botón, se realizará otra solicitud de AJAX para "No seguir" al autor. Dado que solo el nombre de la acción es diferente del código anterior, no lo incluiré aquí. Puedes echar un vistazo a $ jq (". following"). live ("click", function () en el followjs expediente.

La función utilizada para dejar de seguir al usuario es unfollow_wp_authors. Este código es similar a la función de autor siguiente. Podemos poner el código común en una sola función en el futuro si está dispuesto a extender el complemento. En la siguiente sección de autores, agregamos el autor a la lista si aún no está disponible. En este caso, simplemente eliminamos el autor de la lista si ya existe. El código siguiente muestra los cambios en comparación con la función de autor siguiente..

  $ value) if ($ authorId == $ value) unset ($ subscribedAuthorList [$ key]);  foreach ($ authorSubscribersArray como $ key => $ value) if ($ subscriberID == $ value) unset ($ authorSubscribersArray [$ key]); ?>

Puede ver que, en lugar de empujar a los autores a la matriz, los eliminamos utilizando la función unset.


Paso 8 Cargando autor siguiendo la información

Inicialmente, la dirección de correo electrónico estará vacía cuando cargue la página con la lista de autores, ya que no tenemos un procedimiento para identificar al usuario actual. Luego, el usuario debe ingresar el correo electrónico y hacer clic en el botón de carga para obtener la lista con los siguientes detalles de cada usuario. Esta será otra solicitud de AJAX similar a las anteriores y puede echar un vistazo al código usando $ jq ("# loadFollowers"). live ("click", function () . Explicaré la sección de resultados de la solicitud, ya que es un poco diferente a las anteriores..

 

Echemos un vistazo a la función para cargar la siguiente lista de autores desde el lado del servidor:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe donde email =% s y status = 1"), $ subscriber_email); if (count ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe where id =% d"), $ subscriberID); if (count ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> following_authors; $ userFollowedAuthors = explode (",", $ userFollowedAuthors); echo json_encode (array ("autores" => $ userFollowedAuthors));  else else echo json_encode (array ("error" => "Introduzca un correo electrónico válido"));  die (); ?>

Ahora los usuarios están suscritos al servicio y pueden seguir y dejar de seguir a los autores cuando lo deseen. La parte final y más importante de este tutorial es enviar correos electrónicos a los seguidores cuando un autor publica una publicación. Empecemos.


Paso 9 Enviando correos electrónicos cuando se publican publicaciones

Tenemos que desencadenar una acción cuando cualquier usuario publica una nueva publicación. WordPress proporciona un conjunto de acciones llamadas Transiciones de estado posteriores para lograr esta funcionalidad. He configurado cuatro transiciones, que podrían activarse cuando publicas una publicación.

 

Las acciones anteriores llamarán al notificar a los autores funciona siempre que una publicación se convierta a un estado publicado desde uno de los estados nuevo, borrador, pendiente o futuro. Así que vamos a enviar correos electrónicos utilizando el notificar a los autores función.

 post_autor; $ authorDisplayName = get_the_author_meta ('display_name', $ publishPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers donde author_id =% d"), $ publishPostAuthor); if (count ($ authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_list; if ($ authorsFollowersList! = ") $ authorsFollowersEmails = $ wpdb-> get_results ($ wpdb-> prepare (" seleccione el correo electrónico de $ wpdb-> prefix author_subscribe where ID in (% s) "), $ authorsFollowersList); $ bccList = "; para cada ($ autoresFollowersEmails como $ clave => $ emailObject) $ bccList. = $ emailObject-> email. ",";  $ bccList = substr ($ bccList, 0, -1); $ postMessage = "guid">

$ post-> post_title

"; $ emailHeaders. =" De: WP Seguir a los autores
Código