
adruiz
VIP
Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Tengo un problema que me trae de cabeza con un proyecto en WordPress y el idioma de las fechas. Intentaré resumirlo.
El idioma de WordPress lo tengo configurado en Español, por otro lado, tengo algunos metabox que guardan fechas mediante un input date, los cuales almacenan por defecto las fechas en el formato YYYY-MM-DD.
A la hora de recopilar esta información necesito que se muestre con el formato "DD de MM del YY" (12 de mayo del 2007), para ello primero paso la fecha original a una marca de tiempo en Unix con strtotime(), y después la formateo con sfrftime().
Básicamente, algo así:
Pero ocurre que me devolvía fechas en inglés, en plan, "12 de May del 2007".
Al principio el problema lo tenía en localhost y como uso Apache24 no le dí mucha importancia porque creo que en PHP 7.4 no tengo español instalado, supuse que en producción no pasaría lo mismo, pero vi que sí, así que no es problema de los paquetes de idiomas.
Estuve trasteando con timezones y setlocales, finalmente timezones no uso ninguno a nivel de código porque luego WordPress me muestra una alerta en el área de seguridad, en cambio setlocale, tras probar varias configuraciones, con este me funciona, tanto en localhost como en producción:
Está puesto en el wp-config.php.
Entonces, ¿qué problema tengo? Pues que a veces falla. A veces veo que toda la web me está devolviendo esas fechas en inglés, con refrescar la página deja de hacerlo y vuelven a mostrarse en español, pero ahora me fijo que también me ocurre desde el dashboard de WordPress, en algunas áreas del editor de artículos donde muestro esa información, y por mucho que refresque se sigue mostrando en inglés, y esta vez solo ocurre en producción.
¿Alguien tiene alguna idea de qué podría estar pasando? ¿Tal vez no estoy formateando las fechas correctamente?
Os leo.
El idioma de WordPress lo tengo configurado en Español, por otro lado, tengo algunos metabox que guardan fechas mediante un input date, los cuales almacenan por defecto las fechas en el formato YYYY-MM-DD.
A la hora de recopilar esta información necesito que se muestre con el formato "DD de MM del YY" (12 de mayo del 2007), para ello primero paso la fecha original a una marca de tiempo en Unix con strtotime(), y después la formateo con sfrftime().
Básicamente, algo así:
PHP:
$meta = get_post_meta($post_id, 'date');
$unix = strtotime($meta);
$date = strftime("%d de %B del %Y", $unix);
Pero ocurre que me devolvía fechas en inglés, en plan, "12 de May del 2007".
Al principio el problema lo tenía en localhost y como uso Apache24 no le dí mucha importancia porque creo que en PHP 7.4 no tengo español instalado, supuse que en producción no pasaría lo mismo, pero vi que sí, así que no es problema de los paquetes de idiomas.
Estuve trasteando con timezones y setlocales, finalmente timezones no uso ninguno a nivel de código porque luego WordPress me muestra una alerta en el área de seguridad, en cambio setlocale, tras probar varias configuraciones, con este me funciona, tanto en localhost como en producción:
PHP:
setlocale(LC_TIME, 'es_ES', 'Spanish_Spain', 'Spanish');
Está puesto en el wp-config.php.
Entonces, ¿qué problema tengo? Pues que a veces falla. A veces veo que toda la web me está devolviendo esas fechas en inglés, con refrescar la página deja de hacerlo y vuelven a mostrarse en español, pero ahora me fijo que también me ocurre desde el dashboard de WordPress, en algunas áreas del editor de artículos donde muestro esa información, y por mucho que refresque se sigue mostrando en inglés, y esta vez solo ocurre en producción.
¿Alguien tiene alguna idea de qué podría estar pasando? ¿Tal vez no estoy formateando las fechas correctamente?
Os leo.