Come sviluppatore di WordPress, probabilmente sai già quanto siano importanti le prestazioni per un sito web di successo. Comprendere i transient (o dati temporanei) in WordPress e come ti aiuteranno a ottimizzare i tuoi progetti può essere piuttosto complesso.

Fortunatamente, quando li scomponi, i transient non sono poi così difficili da capire. Finchè tieni a mente alcune linee guida chiave, dovresti essere sulla buona strada per integrarli nel tuo prossimo plugin WordPress.

In questo post, faremo una panoramica di cosa sono i transient di WordPress e vedremo come e quando usarli.

C’è molta strada da percorrere, quindi cominciamo subito!

Cosa sono i transient di WordPress?

Per comprendere i transient, è utile disporre di alcune nozioni di base sulla memorizzazione nella cache e sulle API (Application Programming Interface) . Questo perché i transient di WordPress sono un modo per memorizzare nella cache le informazioni recuperate dalle API. A differenza della memorizzazione nella cache del browser, tuttavia, i transient archiviano questi dati nel database MySQL sul server del tuo sito sul.

Ogni transient è composto da tre parti:

  • $transient. E’ la stringa utilizzata per identificare il transient e richiamarlo. Viene anche chiamato “chiave” o “nome” del transient.
  • $value. Sono le informazioni recuperate tramite un’API. Il valore di un transient può essere un oggetto, un array, un numero o una stringa.
  • $expiration. E’ il tempo di permanenza di un transient nel database prima che venga eliminato e sia necessario accedere nuovamente alle informazioni necessarie tramite l’API.

In apparenza, questo è tutto ciò che c’è da sapere sui transient di WordPress. Tuttavia, per usarli correttamente, c’è altro che devi conoscere.

I vantaggi dell’utilizzo dei transient sul tuo sito WordPress

Come accennato in precedenza, il vantaggio principale dei transient è che migliorano le prestazioni del sito web . Ecco una breve descrizione di come funzionano, usando il plugin Google Site Kit come esempio.

Quando il plugin è attivato, utilizza un’API per visualizzare i dati da piattaforme come Analytics e Search Console nella dashboard di WordPress. Senza transient, WordPress dovrebbe recuperare queste informazioni da ogni strumento ogni volta che si visualizza la dashboard del tuo Site Kit:

Al contrario, Site Kit prevede i transient che memorizzano nella cache i dati da Analytics e Search Console. Vengono archiviati per un giorno (o un’ora se la piattaforma non restituisce dati). 

Ogni volta che accedi alla dashboard di Site Kit, WordPress può recuperare rapidamente le informazioni memorizzate dal tuo database invece di dover chiamare nuovamente l’API. Al termine del periodo di scadenza, i vecchi dati vengono eliminati.

Ciò significa che non è necessario attendere ogni volta il caricamento dei risultati. Questi è utile in diverse situazioni, ad esemoio quando devi mostrare i conteggi delle condivisioni sui social media per i tuoi post o visualizzare un feed di notizie.

Quando utilizzare i transient di WordPress

I transient vengono eliminati dal database una volta raggiunta la fine del periodo di scadenza. Per tale motivo, si desidera utilizzarli solo per informazioni che vengono continuamente ricreate. 

Inoltre, sebbene possano migliorare le prestazioni del tuo progetto, i transient sono meglio destinati per query di grandi dimensioni e per chiamate remote. Se per creare un transient richiederà più codice del dovuto per fare una nuova richiesta ogni volta che è necessario, è meglio non utilizzarli.

Gestione dei transient di WordPress

Se vuoi vedere e gestire facilmente i transient che sono attualmente all’opera sul tuo sito WordPress, puoi installare il plugin Transients Manager :

Il plugin fornisce un elenco completo dei transient, puoi trovarlo navigando su Strumenti> Transient :

Il plugin transient manager per WordPress

Qui puoi vedere tutti e tre gli elementi transient che abbiamo elencato in precedenza: la chiave (nome), il valore e il periodo di scadenza. Puoi modificare una di queste funzioni facendo clic sul collegamento Modifica :

Modifica un transient con il plugin Transient Manager per WordPress

Puoi anche eliminare i transient singolarmente o in blocco.

Operazioni di base utilizzate nei transient

Quando si tratta di codifica dei propri transient, ci sono tre operazioni di base che probabilmente è necessario utilizzare. Di seguito ne abbiamo delineata ciascuna, continuando a utilizzare Site Kit come esempio.

1. Impostazione dei transient

La creazione o “impostazione” dei transient è il processo di definizione della chiave, del valore e del periodo di scadenza e dell’applicazione di tali informazioni ai dati pertinenti. Per fare ciò, utilizzerai il seguente formato:

Set_transient (‘key’, $value, expiration_period)

Ecco il codice utilizzato in Google Site Kit per impostare il transient che memorizza i dati di analisi:

// Cache "data found" status for one day, "no data" status for one hour.
			set_transient( $transient_key, (int) $has_data, $has_data ? DAY_IN_SECONDS : HOUR_IN_SECONDS );
		}

		return (bool) $has_data;
	}
}

La chiave temporanea è googlesitekit_analytics_has_data (definita in precedenza nel codice), il valore è $has_data o $has_data? e il periodo di scadenza è di un giorno o un’ora (a seconda del valore).

2. Recupero dei transient

Il recupero dei transient è un pò più complicato. Innanzitutto, è necessario utilizzare una funzione per richiedere i dati necessari. Quindi verificherai se ha un transient corrispondente che deve essere caricato, invece di effettuare una nuova richiesta API.

Il risultato potrebbe essere simile al seguente:

function some_function(){
	$transient = get_transient(‘key’);

Sarà quindi necessario restituire il transient o eliminare i dati scaduti ed effettuare una nuova chiamata all’origine. Infine, è necessario impostare il transient dopo aver restituito i nuovi dati, in modo che vengano memorizzati nuovamente fino allo scadere del periodo di scadenza.

In Google Site Kit, è simile al seguente:

	/**
	 * Checks whether Analytics data exists for the given URL.
	 *
	 * @since 1.4.0
	 *
	 * @param string $url The url to check data for.
	 * @return bool
	 */
	protected function has_data_for_url( $url ) {
		if ( ! $url ) {
			return false;
		}

    $transient_key = 'googlesitekit_analytics_has_data_' . md5( $url );
    $has_data      = get_transient( $transient_key );

    if ( false === $has_data ) {
        /* @var Google_Service_AnalyticsReporting_Report[]|WP_Error $reports Array of reporting report instances. */
        $reports = $this->get_data(
            'report',
            array(
                'url'     => $url,
                'metrics' => array(
                    array( 'expression' => 'ga:users' ),
                    array( 'expression' => 'ga:sessions' ),
                ),
            )
        );

        if ( is_wp_error( $reports ) ) {
            $reports = array(); // Bypass data check and cache.
        }

        foreach ( $reports as $report ) {
            /* @var Google_Service_AnalyticsReporting_Report $report Report instance. */
            $report_data = $report->getData();
            /* @var Google_Service_AnalyticsReporting_ReportData $report_data Report data instance. */
            foreach ( $report_data->getTotals() as $date_range_values ) {
                /* @var Google_Service_AnalyticsReporting_DateRangeValues $date_range_values Values instance. */
                if (
                    isset( $date_range_values[0], $date_range_values[1] )
                    && ( 0 < $date_range_values[0] || 0 < $date_range_values[1] )
                ) {
                    $has_data = true;
                    break 2;
                }
            }
        }

Questo codice dovrebbe quindi essere seguito dallo snippet che abbiamo incluso nella sezione precedente per l’impostazione dei transient.

3. Eliminazione di transient

In alcuni casi, potresti scoprire di voler rimuovere un transient. Ad esempio, se desideri visualizzare sempre le analisi più aggiornate in Google Site Kit, sarebbe meglio non memorizzare nella cache i dati (anche se non ti consigliamo di eliminare effettivamente i transient di Site Kit). 

Altrimenti, il plugin mostrerà gli stessi risultati durante il giorno, anche se hai avuto nuovi visitatori. Poiché il transient dura 24 ore, i dati visualizzati nel pomeriggio saranno semplicemente una versione memorizzata nella cache dei dati caricati al mattino.

Il modo più semplice per eliminare i transient è utilizzare il plugin Transient Manager. Tuttavia, se si desidera utilizzare il codice, è possibile utilizzare la funzione delete_transient() . Tutto ciò che serve è la chiave temporanea:

delete_transient(‘key’);

Dovrai ripeterlo per ogni transient che desideri eliminare.

Scadenza transient: come funziona?

I periodi di scadenza dei transient possono essere espressi in diversi modi. Le due opzioni più semplici sono:

  • In secondi (set_transient(‘key’, $ value, 86400))
  • Uso delle costanti di tempo di WordPress ( set_transient(‘key’, $ value, GIORNO_IN_SECONDI))

In alternativa, puoi anche impostare transient senza scadenza. Ciò può essere utile nelle situazioni in cui si desidera mantenere invariati i dati temporanei, fino a quando non si eliminano e ripristinano manualmente le informazioni memorizzate nella cache.

Creare transient senza scadenza è abbastanza semplice. Lascia semplicemente vuoto il parametro expiration nella funzione set_transient o identificalo come zero.

Comprensione dell’API Transient di WordPress

L’ API Transient di WordPress è semplicemente il mezzo con cui le informazioni vengono memorizzate nella cache del database del tuo sito. Consente tutte le operazioni correlate di cui abbiamo discusso in questo post, tra cui l’impostazione, l’acquisizione e l’eliminazione dei transient.

In altre parole, l’API Transients è solo la parte del core di WordPress che ti consente di utilizzare i transient.

Buon lavoro.