Documentazione / Riferimento sviluppatori: hook di modifica delle regole

HS Min/Max Quantities · Guida basata sulla versione 0.12.0

Riferimento sviluppatori: hook di modifica delle regole

Reagisci al salvataggio delle regole senza dipendere dalla memorizzazione interna. È un contratto di sviluppo introdotto nella 0.12.0.

L’evento pubblico Min/Max

do_action( 'hs_minmax_rules_changed', $current, $previous, $site_id );
ArgomentoTipoSignificato
$currentarrayRegole normalizzate salvate, indicizzate per ID locale della regola.
$previousarrayLa raccolta precedente delle regole leggibili.
$site_idintID del sito WordPress corrente.

È un’azione, non un filtro. I valori restituiti dai callback vengono ignorati. Modificare gli array ricevuti non cambia le regole salvate.

Esempio: invalida la tua cache

Crea wp-content/plugins/myshop-minmax-cache/myshop-minmax-cache.php su un sito di prova, incolla il file completo seguente e attivalo da Plugin. Conserva le integrazioni personalizzate in un plugin separato, così gli aggiornamenti non le sovrascrivono. Questo esempio svuota soltanto una cache che il tuo codice dovrebbe popolare: non aggiunge funzioni visibili al negozio.

<?php
/**
 * Plugin Name: My Store Min/Max Cache Integration
 * Description: Invalidates a local derived cache after Min/Max rule changes.
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
add_action(
    'hs_minmax_rules_changed',
    static function ( array $current, array $previous, int $site_id ): void {
        delete_transient( 'myshop_minmax_summary' );
    },
    10,
    3
);

L’ultimo 3 indica a WordPress di passare tutti e tre gli argomenti dell’azione. Il callback viene registrato anche con Min/Max inattivo, ma può essere eseguito soltanto quando il plugin emette l’evento. Disattiva l’integrazione per interrompere l’invalidazione.

Quando viene emesso l’evento

  • Dopo il salvataggio di una raccolta modificata: salvataggio, attivazione o disattivazione, duplicazione, eliminazione, operazioni in blocco confermate o aggiunta.
  • Non per scritture invariate o rifiutate.
  • Non per scritture dirette dell’opzione, ripristino di backup o sole modifiche ai messaggi globali.

Regole di esecuzione

I callback vengono eseguiti in modo sincrono mentre è attivo il blocco sulla configurazione: mantienili brevi. Non modificare ricorsivamente le regole, non sollevare eccezioni e non eseguire richieste remote lente. L’evento non conferma il completamento di un’intera richiesta HTTP o importazione. È preferibile invalidare i dati derivati e ricostruirli alla lettura successiva.

Rileva più modifiche

Non presumere che l’evento riguardi una sola regola. Confronta le chiavi per trovare aggiunte o rimozioni e i valori delle chiavi comuni per rilevare modifiche. Considera nomi e messaggi delle regole come testo non affidabile e proteggine l’output. Non usare campi array non documentati come interfaccia CRUD stabile.

Hook precedente e confine del Core

plab_minmax_rules_changed viene emesso dopo la nuova azione con gli stessi dati. Ascolta un solo nome, altrimenti l’integrazione verrà eseguita due volte. Il nuovo codice deve usare hs_minmax_rules_changed.

hs_core_ai_providers appartiene al contratto interno del provider Core V1; non è un’API pubblica per personalizzare le regole del negozio. Questa versione non offre un’API REST CRUD generale documentata o un filtro pubblico per sostituire i limiti effettivi. I callback WordPress/WooCommerce registrati nel plugin non sono ulteriori punti di estensione Min/Max.

Verifica l’integrazione

  1. Su un negozio di prova, popola myshop_minmax_summary con un tuo valore di cache.
  2. Salva una regola di prova inattiva con valori modificati: il transient dovrebbe essere stato rimosso.
  3. Ricrealo e salva valori invariati: l’evento non dovrebbe invalidarlo.
  4. Prova anche una modifica in blocco. Ripristina le regole di prova e rimuovi i dati di test.

Riferimento verificato su RuleStore::write(). I test dell’osservatore sorgente coprono il momento del salvataggio e le modifiche riuscite, invariate e rifiutate. Non certificano callback di terze parti.


Torna a tutte le guide · Risoluzione dei problemi