¿Cómo optimizar el código de un plugin en WordPress?
La creación de plugins para WordPress es una tarea apasionante que permite expandir las funcionalidades de un sitio web. Sin embargo, es crucial optimizar el rendimiento y la legibilidad del código, evitando redundancias y haciendo que el plugin sea adaptable a distintos entornos. A continuación, te mostramos cómo conseguirlo.
¿Cómo definir constantes para evitar funciones repetidas?
Una de las estrategias para optimizar tu plugin es evitar las funciones repetitivas. Esto se puede lograr definiendo constantes en lugar de variables o funciones repetidas. En PHP, la función define es muy útil. Por ejemplo:
define('PLZ_PATHS',plugin_dir_path(__FILE__));
Con la constante PLZ_PATHS, sustituimos la función plugin_dir_path en diversas partes del código, haciendo que su ejecución sea única y más eficiente.
¿Cómo hacer que las URLs sean dinámicas?
El manejo dinámico de URLs es fundamental para que el plugin funcione correctamente en diferentes sitios sin necesidad de modificar manualmente dichas direcciones. Al trabajar con JavaScript en WordPress, podemos hacer uso de wp_localize_script. Esta función es útil para pasar datos PHP a JavaScript:
Aquí estamos creando un objeto plz dentro de JavaScript que contiene la restUrl. Este método permite definir URLs de forma dinámica y específica para tu plugin.
¿Cómo hacer uso de Literal Strings en JavaScript?
Cuando estás manejando URLs en JavaScript, es recomendable usar literal strings, haciendo que el código sea más limpio y fácil de leer. Aquí un ejemplo:
const url =`${plz.restUrl}endpoint`;
Usar literal strings elimina la necesidad de concatenar cadenas con el símbolo +, y complementa el manejo adecuado de objetos en JavaScript.
¿Por qué y cómo usar roles dinámicos en el registro de usuarios?
Al registrar un usuario, es importante que el rol asignado sea el apropiado para cada caso. Por defecto, el rol no debería ser estático, como editor; es preferible un rol como cliente, mayormente restringido.
De esta forma, garantizamos que nuevos usuarios obtengan los permisos adecuados.
¿Cómo asegurar la correcta redirección de usuario después del login?
Una práctica recomendable es redirigir al usuario una vez que se haya logueado exitosamente. Para ello, podemos complementar el chequeo de respuestas obtenidas y realizar una redirección.
Así, aseguramos que el usuario termine en la página deseada tras autenticarse correctamente.
Con estos ajustes, no solo optimizas tu plugin a nivel de código y funcionalidad, sino que garantizas una experiencia consistente en distintos entornos. Sigue explorando y mejorando tus técnicas de desarrollo en WordPress para crear soluciones robustas y eficientes.
la computadora del profesor esta muy lenta y no se graban las cosas bien en el video... no se entiende nada de lo que esta haciendo
Por favor Sres de Platzi, obsequien una mejor laptop al profesor para que pueda grabar bien los videos.
:grin:
El video es bueno, pero falla al final en la imagen, dejo mi codigo de login.js es similar al que realizo el profe en la clase, el atributo usado para la redirección es window.location.href = ...
window.addEventListener("DOMContentLoaded",function(){let $form =document.querySelector("#signin");let $msg =document.querySelector(".msg"); $form.addEventListener("submit",function(e){ e.preventDefault();let datos =newFormData($form);let datosParse =newURLSearchParams(datos);fetch(`${plz.rest_url}/login`,{method:"POST",body: datosParse
}).then(res=>res.json()).then(json=>{console.log(json)if(json !==false){ $msg.innerHTML= json
}else{ $msg.innerHTML='<strong>Se ha loggeado correctamente 😎</strong>'window.location.href=`${plz.home_url}`}}).catch(err=>{console.log(`Hay un error: ${err}`)})})})
Con:
window.location.href= plz.home_url
basta, solo necesitas la sintaxis de plantilla cuando vas a concatenar una variable con un string ej.
`${plz.rest_url}/login`
@natirivero es para asegurarme que el dato sea un string
Se traba mucho la grabación de la pantalla y no permite ver bien el paso a paso.
Buen video para cerrar el curso.
Lastima el detalle que por partes la pantalla no muestre lo que hace el profesor.
Muy bueno el curso, lo único es que me genera ansiedad la lentitud de la computadora o grabación de la pantalla del profesor. Se ve muy lag que no permite ver con comodidad cada paso que realiza.
esta muy desfasado el video, me costo muy entender el curso, gracias a todos los compañeros por sus contribuciones sin ustedes no ubiera entendido nada.
Que cursito pesado, con el retraso que tienen los videos la mitad de las cosas no se ven.
Hola, entiendo que la contraseña nunca debe guardarse en texto plano ¿Cómo puedo encriptar la contraseña en WordPress?
Si bien la guarmos en texto plano desde la función, WordPress internamente la encripta para guardarla en la base de datos. Lo podes verificar en la Base de datos en la tabla wp_user
¿Podrían subir al repositorio los cambios que se realizaron?
Hola! Los archivos están los recursos de la clase.
No están los últimos cambios que hiciste en el código.
Ya revisé de nuevo el repo y no está lo último que explicaste en el video.
Profe por favor subir el repositorio al git/ colocar los cambios en recursos, ya que estan anteriores y no los últimos de que sean modificado. Por favor actualizar este curso.
Les dejo una propuesta para lograr redireccionar al home siempre y cuando se haya autenticado correctamente:
$user =wp_signon($args,false); $result =null;if(is_wp_error($user)){ $result =array('res'=>0,'msg'=>"Error al autenticar usuario, ".$user->get_error_message());}else{ $result =array('res'=>1,'msg'=>"El usuario se autenticó correctamente");}return $result;
fetch(`${plz.rest_url}/login`,{method:"POST",body: datosParse
}).then(res=> res.json()).then(json=>{//la parte donde no se logra ver la corrección del profeif(json ="false"){window.location.href=`${plz.home_url}`}else{ $msg.innerHTML= json?.msg
}}).catch(err=>{console.log(`Hay un error: ${err}`)})
No se vio la linea en la que se realizo la correccion
WordPress 6.0 => Esto me dice la consola: Hay un error: SyntaxError: Unexpected end of JSON input
El usuario se loggea pero no redirecciona la ventana...
nose si a alguno le pasó, localmente me funcionó perfecto, pero al subirlo a un server en internet, al hacer el fetch me tira un error 500 de servidor. El mensaje de error por consola es:
SyntaxError: Unexpected token < in JSON at position 0
No le encuentro la vuelta a esto
¡Hola, Camilo! ¿Me compartís tu código PHP del API y el archivo JS en el que haces el pedido?