En la versión 5.5 de WordPress se añadió una nueva función wp_get_environment_type() para diferenciar acciones dependiendo del estado de un sitio WordPress: en producción, local, ensayos o en vivo.
Es una función especialmente útil para desarrolladores de plugins y temas o empresas de hosting que quieran lanzar acciones diferentes, dependiendo del estado de desarrollo de la web.
Valores de la función wp_get_environment_type()
Dependiendo del estado de la web los distintos valores que se pueden utilizar son los siguientes:
local– Entornos de desarrollo local.development– Entornos en fase de desarrollo.staging– Entornos de pruebas/ensayos/staging.production– Cuando la web ya está en producción/vivo.
Usos de la función wp_get_environment_type()
Posibles uso que se me ocurren, y que pocos aún aplican salvo honrosas excepciones, podrían ser:
- Empresas de hosting que, al crear un staging de tu web para desarrollo de nuevas funcionalidades, desactiven el indexado del staging y plugins que requieran conexión automática con servicios externos. Luego, al pasar de staging a producción reactivar todo de nuevo.
- Plugins de SEO/Seguridad/Optimización que apliquen distintas configuraciones según el estado de desarrollo de la web. En esto ya están tardando.
- Aplicaciones de instalación de WordPress en entornos locales que apliquen diferentes configuraciones para este tipo de estados de desarrollo.
Ejemplos de uso de wp_get_environment_type()
Un ejemplo genérico de uso sería algo así:
switch ( wp_get_environment_type() ) {
case 'local': //Si el entorno es local
case 'development': //Si el entorno es en fase de desarrollo
no_hacer_nada();
break;
case 'staging': //Si el entorno es un ensayo/staging
hacer_algo_de_staging();
break;
case 'production': //Si el entorno ya es producción/vivo
default:
hacer_algo_de_produccion();
break;
}
Y, si nos planteamos algo concreto, podrías crear un mu-plugin que modificase el archivo robots.txt si la web está en producción, así:
<?php
/* Evitar rastreo de robots en producción */
if ( 'production' !== wp_get_environment_type() ) {
// Rastreo de robots.
add_filter( 'robots_txt', 'wpdocs_name_block_crawling', 999 );
// Activamos la opción de "Disuadir a los motores de búsqueda de indexar este sitio"
add_filter( 'pre_option_blog_public', '__return_zero', 999 );
}
/* Filtramos el archivo robots.txt para que evite el rastreo en entornos que no sean de producción */
function wpdocs_name_block_crawling( $output ) {
$output = '# El rastreo está bloqueado en no-producción' . PHP_EOL;
$output .= 'User-agent: *' . PHP_EOL;
$output .= 'Disallow: /';
return $output;
}
Chulo ¿eh?
Cómo establecer el tipo de entorno
Hay dos maneras de establecer en una instalación de WordPress el tipo de entorno, para que el plugin/tema/hosting pueda invocar acciones dependiendo de su estado mediante la función wp_get_environment_type().
Se procesan en el siguiente orden con cada opción secuencial anulando cualquier valor anterior:
- La variable PHP de entorno
WP_ENVIRONMENT_TYPE - La constante
WP_ENVIRONMENT_TYPE.
Para ambos, si el valor del entorno no está en la lista de entornos permitidos, el valor por defecto será production.
Entornos de desarrollo en wp-config.php
La forma más sencilla es claramente definiendo la constante en el archivo wp-config.php:
define( 'WP_ENVIRONMENT_TYPE', 'development' );
Como vimos antes, los posibles valores son: local, development, staging o production, siendo este último el valor por defecto, así que si fuera el caso no hace falta añadir la constante.
Como nota adicional, cuando se define la constante WP_ENVIRONMENT_TYPE como development, se activa automáticamente el modo DEBUG.
Ya me contarás pero me parece la función wp_get_environment_type() me parece realmente útil, especialmente para empresas de hosting y desarrolladores de plugins concienzudos ¿no crees?
En cualquier caso, espero que hoy hayas aprendido algo más sobre WordPress … que igual no conocías 🙂
La entrada Para qué sirven la constante WP_ENVIRONMENT_TYPE y la función wp_get_environment_type() la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.
0 Commentaires