Category: Wordpress
WordPress ofrece una funcionalidad llama cron que te permite agendar tareas cada cierto tiempo. Éstas tareas son ejecutadas cada cierto tiempo según lo definido. De esta forma puedes ejecutar funciones de forma automática. Por ejemplo: respaldo de base de datos, sincronización con servicios externos, borrar caché entre otros.
¿Cómo funciona el cron de WordPress
WordPress posee un archivo llamado cron.php que al ejecutarlo. Revisa todas las tareas definidas en el cron para ejecutar las funciones de aquellas programadas a la hora actual o anterior. Por ejemplo, si decides ejecutar una tarea cada 12 horas. La primera vez que lo ejecutes lo agendará para ser ejecutado luego de 12 horas. Cada vez que se llama a al archivo cron.php bien sea de forma manual (accediendo directamente a él) o como lo hace por defecto, donde chequea cada vez que la página recibe una visita (no lo hace todo el tiempo). El archivo chequea si existen eventos registrado para la hora actual o ya pasada (es decir se le culminó el tiempo de agendado) y llama a la función definida en cada evento.
Agendar nuestros eventos al cron
Como comenté anteriormente, necesitamos definir el nombre de nuestro evento y la función a ejecutar. Primero debemos chequear que el evento no está agendado previamente para agregarlo. Una vez agregado no es necesario hacerlo de nuevo, con una sola vez se ejecutará varias veces automáticamente. De lo contrario será agregado infinidad de veces al cron. A continuación podemos ver un ejemplo de como hacer este proceso en tu plugin o tema.
wp_schedule_event( time(), 12 * HOUR_IN_SECONDS, 'mi_evento' );
}
En el segundo parámetro podemos ver 12 * HOUR_IN_SECONDS, ésta es una constante definida en WordPress, aunque podemos utilizar las cadenas de texto como ‘daily‘ (diariamente una vez al día), ‘twicedaily‘ (dos veces al día), ‘hourly‘ (cada hora). De esta forma tenemos control de la periodicidad del evento.
Cómo definir mis propios intervalos
Puedes definir tu propio período de tiempo para ejecutar tareas en el cron. Por ejemplo cada 3 horas o crear un período definido por un usuario a través de una caja de texto. Para ello, debes hacerlo de la siguiente forma:
$schedules['medio_minuto'] = array(
'interval' => 30,
'display' => esc_html__( 'Every Five Seconds','mi-dominio-idioma'),
);
return $schedules;
}
add_filter( 'cron_schedules', 'miprefijo_agregar_intervalo_de_cron' );
Ahí vemos como WordPress posee en la variable $schedules la lista de intervalos y su cantidad en segundos. Nosotros a través de un filtro, vamos a agregar nuestro intervalo de medio minuto a la lista definida en la variable $schedules. Finalmente cada vez que se llame al listado de intervalos, nuestro período personalizado aparecerá allí. Y podemos utilizarlo en el segundo parámetro de wp_schedule_event().
Espero que esta guía os haya gustado, para mas información puedes chequear la documentación oficial de WordPress Cron. Cualquier duda que tengas no dudes en preguntarla.
La entrada WordPress Cron: ejecutar tu tareas cada X horas con intervalos personalizados se publicó primero en El blog de Skatox.
WordPress es uno de los CMS mas usados en el mundo. Al parecer 33% de Internet esta soportado por WordPress. Tal vez por su facilidad de uso para crear contenido de forma rápida y fácil para un usuario promedio de Internet. Pero la plataforma no está diseñada para resolver todo tipo de problemas. Por esta razón si tenemos una aplicación web (en este caso hecha con Yii2) o un sistema mas complejo es necesario realizarla con otro tecnología y no a través de plugins.
¿Por que integrar autenticación de WordPress a Yii2
En el párrafo anterior comenté como WordPress no puede ser usado para todo tipo de problemas. A veces necesitamos crear una aplicación con un framework para resolver cierto tipos de problemas o tener mayor control. Yo suelo usar el framework Yii2 permite realizar buenas aplicaciones en poco tiempo. Llevo un par de años usándolo y me gusta mucho.
A veces, tienes un sitio web con WordPress donde tienes una base de datos de usuario. Por ejemplo, una tienda registra todos sus usuarios allí o un sitio de noticias tiene cuentas para todos los redactores. Es posible reutilizar esta información en otro sistema que este alojado en el mismo servidor y usarlo como medio de autenticación.
Se que lo ideal es hacer una autenticación a través de OAuth o un API pero en algunos casos donde es un sistema pequeño, no hay presupuesto ni tiempo para invertir en esta solución es posible hacerlo de la siguiente manera.
Incluir el código base de WordPress
Antes de incluir el código de WordPress para la autenticación, tenemos la posibilidad de descartar la carga de código que no hemos usado, para esto podemos incluir en nuestro archivo PHP las siguientes constantes. Esto lo podemos escribir en en el archivo principal de Yii2, ubicado en /web/index.php antes de iniciar la aplicación.
Estas 3 constantes desactivan: la carga de temas, limitar la cookie al dominio del sitio y desactivar el cron. Este último evita que se tarde mucho tiempo la autenticación al lanzar los eventos pendientes del cron.
Luego simplemente incluimos los archivos wp-load.php y pluggable.php para cargar las funciones de autenticación de WordPress.
require(__DIR__ . '/../' . $wp_folder . '/wp-load.php');
require(__DIR__ . '/../' . $wp_folder . '/wp-includes/pluggable.php');
(new yii\web\Application($config))->run();
Modificación de la autenticación
Una vez realizado el paso anterior, procedemos a modificar la autenticación para que en vez de buscar en la base de datos, utilice la información de WordPress. Para ello en el método de findIdentity lo podemos realizar de la siguiente forma
$wp_user = get_user_by($wp_attribute, trim($value));
if ($wp_user) {
$user = new self();
$user->id = $wpUser->ID;
$user->username = $wpUser->data->user_login;
$user->niceName = $wpUser->data->user_nicename;
$user->displayName = $wpUser->data->display_name;
$user->email = $wpUser->data->user_email;
$user->dateRegistered = $wpUser->data->user_registered;
$user->roles = $wpUser->roles;
$user->password = $wpUser->user_pass;
return $user;
} else {
return null;
}
¡Listo! Ya podrás iniciar sesión en tu aplicación Yii2 utilizando las credenciales de tu instalación de WordPress. Nota como una vez teniendo el objeto de tipo WP_User podemos acceder a toda la información del usuario.
Espero que te guste y te sirva esta información.
La entrada Autenticar en Yii2 usando los usuarios de WordPress se publicó primero en El blog de Skatox.
Si te ha pasado como a mi que has vuelto a editar tu WordPress con Visual Composer y todo se ha vuelto una locura, no te preocupes, hay una solución muy sencilla.
Desde la versión 5.0.1 de WordPress, se ha agregado un nuevo editor de texto para todos los usuarios llamado Gutenberg. Para quienes no lo conocen, este nuevo editor permite la edición de contenido por bloques, facilitando una elaboración de contenido estructurado que agiliza la publicación de articulos y páginas con una calidad increible… ¿Pero que pasa con aquellos de nosotros que utilizabamos Visual Composer desde hace mucho tiempo antes de que este nuevo editor existiera?
Si aún deseas utilizar Visual Composer (que mi recomendación es ir migrando progresivamente tu contenido de un editor al otro para utilizar la menor cantidad de plugines necesarios), la forma mas sencilla de volver a tener activo tu editor de VC por encima de Gutenberg es instalando Classic Editor.
La comunidad ha desarrollado este plugin para que puedas hacer uso del editor original, y que tu VC funcione como antes. Luego de instalarlo, verifica en Ajustes -> Escritura -> Editor por Defecto que tengas activa la versión Clasica.
En mi caso, seguiré utilizando VC un tiempo mas, ya que sus galerías y complementos extendidos me brindan mas opciones y libertades de lo que Gutenberg ofrece por ahora.
This post has a nicer formatting that can be seen at it's original source at tatica.org , so feel free to hit the link and read better version!
Registro WordPress
La solución es de forma inmediata, dentro del Escritorio (al que accedas administración del WordPress), le vas hacer click en a Ajustes, Generales y activas o desactiva el checkbox de: Cualquiera puede registrarse. depende para lo que requieras.
Si lo que tienes problema con usuarios que se registran y en realidad son robots o personas spammers, usa el plugin que mencione anteriormente http://blog.julioh.com.ve/?p=476
en el cual se hace ocultar la url de wp-admin otra forma es usando .httpass dentro de los directorios y bloqueando su acceso, o en su momentos podrías saber cual es tu ip para indicarle desde donde te conectas por ejemplo algo así.
order allow,deny
deny from 8.8.8.8
deny from 8.8.8.9
allow from all
WordPress por ser un CMS mas usado pues tienes vulnerabilidades y necesitamos blindarlo en seguridad y que mejor usando plugins para que no tengas una mala experiencia.
Esta es una de esas en la cual la ruta ../wp-admin/ la remplazas para evitar acceso a ella.
En el caso el plugin WPS Hide Login no vas a eliminar /wp-login.php o /wp-admin , pero si lo va remplazar para no sea visible y colocaremos una url que solo sabremos nosotros.
Lo buscamos WPS Hide Login en plugins haz clic en Instalar y posteriormente en Activar.
En el plugin accede a Ajustes, Generales y establece la palabra de paso que sustituirá al clásico:
wp-admin por no-vasaentrar guardas los cambios y pruebas.
Configuración del plugin
Cuando intentas acceder a http://tu-dominio.com/wp-admin
Te dará un 404 not found
De igual forma también para /wp-login.php no existen.
Prueba de acceso incorrecta
Si por el contrario pones la url de tu dominio con la palabra de paso establecida:
http://tu-dominio.com/?no-vasaentrar
Te va a salir tu panel para acceder, que se busca con esto, evitar ataques de diccionario, evitar suscripciones y proteger tu CMS de la mejor manera.
si por casualidad no te acuerdas de la url, puedes borrar el plugin en la carpeta wp-content y vuelve a la ruta original
Desde hace un tiempo he creado un canal en Telegram para mantener una comunidad donde la temática es relacionada a WordPress, el canal ha estado funcionando por varios meses y se mantiene con poco off-topic, hay gente de cualquier nivel y lo más importante es que entre todos nos ayudamos, si usas telegram y quieres pertenecer acá está la dirección:
Este sábado estare en la sede de la UNET dando una pequeña charla demostrativa (más como un taller) titulada:
Desarrollo de un sitio de catálogo usando campos personalizados (Advance Custom Fields)
En donde estare explicando como usar este maravilloso plugin para construir posts a la medida y personalizar WordPress para hacer un sitio web estilo catálogo, esperen ver algo de código y una demostración real.
Para mayor información de mi charla y de otras que se estarán dando por favor dirigirse a la web del evento en meetup: http://www.meetup.com/es-ES/WordPress-Meetup-San-Cristobal-Venezuela/events/232355985/
Lugar: hall del edificio C de la UNET (El edificio que queda por el estadio de usos múltiples)
Hora: 2:15 pm – 4:30 pm
El grupo de usuarios linux del Táchira y otras organizaciones relacionadas al Software Libre en el Táchira se complace en invitarlos este Sábado 23 de Abril en las instalaciones del auditorio de la UNET al Flisol 2016 (Festival Latinoamericano de Software Libre), evento gratuito que se hace en simultáneo en más de 200 sedes a nivel de Latinoamerica, en esta oportunidad también tenemos una reunión del grupo de usuarios de WordPress para quienes estén interesados.
Por mi parte voy a estar instalando (y enseñando a instalar) Fedora 23 a todo aquel que este interesado, además de estar ayudando a los coordinadores en cualquier cosa que puedan necesitar y si me queda tiempo estare dando una charla en conjunto sobre Bitcoin.