Integrar la purga progresiva de JSON

POM Cache admite la eliminación de archivos exactos, la eliminación del sitio actual, la eliminación activada por entradas y una eliminación limitada de contexto de archivo. Selecciona la función auxiliar solo después de comprender su alcance de alternativas.

Eliminar un archivo exacto

$relative_path = 'archive/book/page-2.json';

if (
    function_exists( 'pom_cache_json_normalize_relative_path' )
    && function_exists( 'pom_cache_json_delete' )
    && '' !== pom_cache_json_normalize_relative_path( $relative_path )
) {
    pom_cache_json_delete(
        $relative_path,
        array( 'context' => 'my_plugin_page_refresh' )
    );
}

pom_cache_json_delete() devuelve true solo si se elimina un archivo existente.

Usa pom_cache_json_purge() con cuidado

Con un relative_path válido, pom_cache_json_purge() elimina ese archivo exacto y emite acciones de purga:

$normalized = pom_cache_json_normalize_relative_path( $relative_path );
if ( '' === $normalized ) {
    return;
}

pom_cache_json_purge(
    array(
        'relative_path' => $normalized,
        'context'       => 'my_plugin_page_refresh',
    )
);

Si relative_path falta o no es válido, la función auxiliar realiza una purga completa de JSON del sitio actual. Nunca pases datos de petición sin comprobar y asumas que una ruta no válida se convertirá en una operación nula.

Purgar un contexto de archivo

pom_cache_json_purge_context(
    array(
        'post_type' => 'book',
        'locale'    => 'es_ES',
        'context'   => 'my_plugin_book_archive',
    )
);

Con un post_type válido, esto elimina el subárbol de archivo del sitio actual para ese tipo de entrada. Cuando la clase de contexto progresivo POM Theme está disponible, locale puede añadir su prefijo de URL de localización.

Sin un post_type, pom_cache_json_purge_context() recurre a una purga completa de JSON del sitio actual. Sanea y exige el tipo de entrada antes de llamar cuando el alcance dirigido sea obligatorio.

Alcance del auxiliar de etiquetas

pom_cache_json_purge_tags( $tags ) actualmente ignora la lista de etiquetas y realiza una purga completa de JSON del sitio actual. Existe como un contrato de compatibilidad, no como un índice de etiquetas.

No lo llames dentro de un bucle ni lo describas como eliminación dirigida.

Observar una purga

add_action(
    'pom_cache_json_before_purge',
    static function ( $args ) {
        // Record only non-sensitive context if needed.
    }
);

add_action(
    'pom_cache_json_after_purge',
    static function ( $args, $deleted ) {
        // $deleted is the number of files removed for this operation.
    },
    10,
    2
);

Las operaciones de ruta exacta y de purga completa pom_cache_json_purge() emiten ambas acciones. No asumas que todas las eliminaciones de nivel inferior o de subárbol de contexto las emiten.

Auxiliares de sitio y de entrada

pom_cache_json_delete_site_cache( $context ) aplica los filtros de eliminación de sitio compartidos y específicos de JSON, y luego elimina el árbol de JSON del sitio actual.

pom_cache_json_delete_site_cache_for_post( $post_id, $post, $context ) omite revisiones, guardados automáticos, entradas no válidas o no visibles, aplica pom_cache_json_clear_post_cache y, a continuación, realiza la purga a nivel de sitio. Devuelve el ID de la entrada.

Purga de JSON activada por los ajustes

pom_cache_json_purge_on_settings_changes está desactivado de forma predeterminada (false). Al activarlo, se registran integraciones para los ajustes de POM Framework y de búsqueda por facetas:

add_filter( 'pom_cache_json_purge_on_settings_changes', '__return_true' );

Las páginas de POM Framework vigiladas de forma predeterminada son pom-theme-options y pom-translate. Amplíalas sin eliminar entradas existentes:

add_filter(
    'pom_cache_json_framework_settings_purge_pages',
    static function ( $pages, $page_slug, $tab, $subsection ) {
        unset( $page_slug, $tab, $subsection );
        $pages[] = 'my-plugin-settings';

        return array_values( array_unique( $pages ) );
    },
    10,
    4
);

Esta integración de ajustes globales solo es apropiada cuando un guardado en la página vigilada puede cambiar el JSON progresivo.