Integrar lecturas de JSON progresivas

pom_cache_json_read() recupera un artefacto JSON validado del sitio actual durante la fase de WordPress. Devuelve la cadena JSON almacenada si la operación tiene éxito y null cuando el tiempo de ejecución, la ruta, el archivo, el tamaño, la carga útil o la política de lectura la rechazan.

Leer una ruta conocida

$relative_path = 'archive/book/page-2.json';
$context = array(
    'integration' => 'my_catalog',
    'post_type'   => 'book',
);

$json = function_exists( 'pom_cache_json_read' )
    ? pom_cache_json_read( $relative_path, $context )
    : null;

if ( null !== $json ) {
    $payload = json_decode( $json, true );
}

El asistente requiere:

  • el interruptor maestro de JSON progresivo;
  • el interruptor de alternativas de lectura de WordPress;
  • una ruta relativa segura que termine en .json;
  • un archivo legible, no vacío y existente;
  • un archivo que no supere el máximo configurado;
  • JSON válido;
  • una decisión permitida de pom_cache_json_can_serve_cached_file.

No genera una carga útil que falte.

Vetar una lectura

add_filter(
    'pom_cache_json_can_serve_cached_file',
    static function ( $can_serve, $file, $context ) {
        unset( $file );

        if ( ! $can_serve ) {
            return false;
        }

        if ( ! empty( $context['force_dynamic'] ) ) {
            return false;
        }

        return true;
    },
    10,
    3
);

Conserva un rechazo previo. El contexto difiere según quién lo invoque:

  • una llamada del asistente de WordPress recibe el contexto suministrado por esa integración;
  • un acceso temprano por URL incluye phase, relative_path y request_uri.

No asumas que todas las claves existen. La devolución de llamada de un plugin convencional también puede cargarse demasiado tarde para afectar a un drop-in o a un acceso de Apache ya completado.

Integración de alternativas de POM Theme

POM Cache escucha:

apply_filters(
    'pom_progressive_archive_cached_json',
    $cached_json,
    $relative_path,
    $context
);

Intenta una lectura solo cuando otro proveedor no ha suministrado ya un valor; es decir, cuando $cached_json es estrictamente null. Los proveedores de terceros deben conservar un resultado no nulo:

add_filter(
    'pom_progressive_archive_cached_json',
    static function ( $cached_json, $relative_path, $context ) {
        if ( null !== $cached_json ) {
            return $cached_json;
        }

        // Return null to let the next provider or generator continue.
        return null;
    },
    5,
    3
);

Gestión de resultados y errores

Trata null como un fallo de caché y continúa con tu generador canónico. No muestres un error solo porque no exista un archivo de caché. Una caché es una optimización, no la fuente de referencia.

No decodifiques y vuelvas a codificar una cadena en caché a menos que tu integración necesite una estructura de datos; POM Cache ya valida que los bytes almacenados son JSON.

Cuando una lectura falte de forma inesperada, inspecciona el maestro de JSON, las alternativas de WordPress, la ruta relativa, el tamaño máximo, el número de archivos y la ruta de generación/escritura, en ese orden.