Autoload: medir las opciones que se cargan siempre y cambiarlas
Qué se mide realmente aquí
WordPress lee en cada llamada individual — página de inicio, imagen, petición REST — todas las opciones con la columna autoload puesta, en una única consulta. Esas filas, por tanto, no cuestan tiempo una vez, sino siempre. Qué valores de la columna cuentan como «se carga» se lo pregunta Kakapo al propio WordPress (wp_autoload_values_to_autoload, desde la 6.6, con su filtro incluido); en instalaciones más antiguas vale la lista yes, on, auto-on, auto. Después se cuenta la longitud de cada valor en PHP, es decir, bytes reales. LENGTH() en SQL sería más rápido, pero según el controlador cuenta caracteres en lugar de bytes — con SQLite, los acentos y los emojis harían aparecer cifras equivocadas en la interfaz. La lectura se hace en pasos de 100 filas y como máximo 20.000 filas por pasada; si se alcanza ese tope, la interfaz lo dice y señala expresamente las cifras como un valor mínimo. La medición solo se ejecuta al abrir la sección o con «Medir de nuevo» — nunca al construir la página para un visitante — y después vale 300 segundos.
Leer correctamente las cuatro cifras
Arriba hay cuatro cifras. «Cargado en cada llamada» indica el tamaño total, el número de opciones y la duración de la medición. «Proporción respecto al umbral de aviso» lo calcula contra 800.000 bytes — exactamente el mismo umbral que la comprobación «Estado del sitio web» del núcleo de WordPress, incluido su filtro; dos límites de aviso distintos en una misma instalación solo serían confusos. «De ello, cambiable» es la parte sin propietario activo, es decir, lo que realmente puedes tocar. «Ya cambiado» suma lo que aquí ya has sacado del proceso de carga. Debajo, la tarjeta «De dónde viene la carga» muestra la misma cantidad repartida por procedencia, y la segunda tarjeta las 25 partidas individuales más grandes.
La asignación es una comparación de nombres, no una prueba
La tabla options no tiene ninguna columna «Propietario». Por eso Kakapo compara el nombre de la opción con lo que hay realmente en el disco: el nombre del directorio, el nombre de archivo del script principal y el dominio de texto de cada plugin instalado, así como los slugs de todos los temas. Gana el prefijo coincidente más largo; de lo contrario, «kakapowp» ganaría frente a «kakapowp_performance» y se nombraría el plugin equivocado. Lo que un plugin utiliza realmente para sus opciones no figura en ninguna cabecera — una abreviatura como «wpseo» no se puede deducir de «Yoast SEO». Esos casos van a parar al cajón «sin asignación», y eso significa «no lo sé», no «no es de nadie». Si conoces un prefijo con seguridad, lo añades después mediante el filtro kwpp_autoload_praefixe; el plugin hace exactamente lo mismo con su propio prefijo.
Qué se puede cambiar — y por qué muchas cosas quedan bloqueadas
El botón «Cambiar» solo aparece cuando se cumplen dos condiciones a la vez: la opción tiene al menos 1 KB y no pertenece a ningún componente activo. Quedan bloqueadas así las opciones del núcleo de WordPress (lista fija de populate_options más los patrones theme_mods_*, widget_* y *_user_roles — esas se necesitan de verdad en cada llamada), las memorias intermedias (los transients van a la limpieza profunda, donde desaparecen del todo en lugar de cargarse solo más tarde), todo lo que procede de un plugin activo o del tema activo, y todo lo que está por debajo de 1 KB, porque ahí la consulta individual adicional cuesta más que los bytes ahorrados. Pasa el ratón por encima de un botón atenuado: el motivo aparece ahí como aviso. El caso que merece la pena es casi siempre la extensión inactiva o desinstalada hace tiempo cuyas filas simplemente se han quedado ahí. Sin una licencia válida, la sección está en reposo — se sigue midiendo y mostrando, pero no se cambia nada.
Cambiar, registro, deshacer
La escritura se hace a través de wp_set_option_autoload() del núcleo, no con un UPDATE propio: solo así se vacían después las memorias intermedias correctas; de lo contrario, una cache de objetos externa seguiría entregando el estado antiguo. En instalaciones sin esa función, Kakapo pone «no» y vacía alloptions, notoptions y la propia entrada individual. Antes de escribir, la fila se comprueba otra vez en fresco: si todavía existe, si sigue estando en «se carga» y qué tamaño tiene en ese momento — en el registro debe constar lo que realmente se ha sacado del proceso de carga. Si la base de datos no ejecuta el cambio, el mensaje lo dice expresamente y no se ha cambiado nada. El registro conserva hasta 200 entradas con el valor antiguo de la columna, el tamaño, el momento y el nombre de usuario. Deshacer se puede de una en una o para todas a la vez; se vuelve a escribir «se carga», porque el valor intermedio «auto» de WordPress no se puede restaurar mediante la función del núcleo — el valor original sigue siendo visible en el registro. Si una opción ha desaparecido del todo entretanto, por ejemplo porque el plugin se ha desinstalado, Kakapo lo comunica y elimina la entrada sin objeto, en lugar de afirmar que se ha «deshecho».