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..
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:
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:
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'); ?>
registro_activación_hook
. Aquí es donde debemos crear nuestras tablas de base de datos..dbDelta
función para ejecutar la consulta SQL como se muestra en el código anterior.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.
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. = ''; $ authorsList. = ''. get_avatar ($ autor-> ID). ''. get_the_author_meta ('display_name', $ author-> ID). '
'. get_the_author_meta ('description', $ author-> ID). '
obtener_usuarios
función.usuario_can
función.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'. $ autoresLista. ''. $ actStatus. 'Introduce tu correo electrónico
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.
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'); ?>
wp_enqueue_script ('jquery')
followjs
que está en la carpeta de complementos.wp_register_style
y wp_enqueue_style
funciones También se encuentra en la carpeta de complementos.plugins_url
La función le dará la ruta a la carpeta del complemento actual. Esta es la mejor manera de incluir scripts. Algunas personas obtienen la URL del directorio de complementos y agregan el nombre de la carpeta de complementos para obtener la ruta. Esto no se recomienda y causará errores cuando se cambie el nombre de la carpeta del complemento.wp_localize_script
función. ajaxUrl
- Obtiene la ruta al archivo ajax en WordPress.ajaxNonce
- Proporciona una clave única para cada solicitud de ajax con fines de validación..corrienteURL
- Obtiene la ruta a la URL actual para identificar la página de contribuyentes.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..
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í..
subscribe_to_wp_authors
.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 regresa0
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 (); ?>
wp_verify_nonce
función. Diferentes valores de nonce significa que la solicitud AJAX debe ser inválida y descartada.is_email
.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..
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.
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));?>
follow_authors; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explode (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in ( $ subsiredAuthorList, $ authorId);?>
follow_authors
valor de columna en el wp_author_subscribe
mesa.explotar
y luego verifique si el usuario ya está suscrito al autor usando el en_array
función. Luego agregamos el ID de autor en la lista de autores seguidos del usuario.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 "));?>
$ autorSuscriptoresArray
y asignando a una variable llamada $ seguidoresListar
$ suscritoAuthorList
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.
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..
seguir
y comprueba si el autor sigue al autor..inArray
La función se utiliza para esto y se devolverá -1
Si la cadena de búsqueda no se encuentra en la matriz.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 (); ?>
wp_author_subscribe
.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.
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