Site icon Noir Solutions

WordPress Tutorial Lezioni 6.9. Le Transient API.

Le Transient API di WordPress sono un semplice modo di immagazzinamento dei dati di cache nel database di WordPress.
Questo metodo permette di utilizzare queries intensive e immagazzinarle in una cache temporanea per incrementare le prestazioni. Le Transient API sono quindi temporanee , significa che dopo uno specifico ammontare di tempo, la cache (copia) sarà o aggiornata o cancellata.
Fondamentalmente è tutto qui. Vediamo qualche funzionamento.

Il primo passo è settare la transient API. Il meccanismo che si utilizza è utilizzare set_transient()

set_transient( nome Transient, valore transient , scadenza in secondi)
set_transient("ilmiosito", "memorizzo 1", 3600);

In questo caso il valore memorizzo 1 del miosito sarà accessibile per 1h passato questo tempo il valore verrà automaticamente cancellato.
Dalla versione 3.5 WP ha inoltre introdotto un altro sistema di nomenclatura che facilita abbastanza il precende ossia

MINUTE_IN_SECONDS = 60 (seconds)
HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS
DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS
WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS
MONTH_IN_SECONDS = 30 * DAY_IN_SECONDS
YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS

quindi volendo il settaggio può essere riscritto nella seguente maniera.

set_transient("ilmiosito", "memorizzo 1", 1 * HOUR_IN_SECONDS);

Per ottenere i valori memorizzati nel database si usa la funzione get_transient();

La sua sintassi è la seguente.

get_transient( $transient );

dove ovviamente $transient è il nome che abbiamo utilizzato nella memorizzazione
Facciamo un piccolo esempio per chiarire meglio il suo utilizzo

$value = get_transient("ilmiosito");

if($value === false)
{
 echo "Expired or not found";
}

nel caso non avessimo più bisogno di quella memorizzazione per rilasciare lo spazio di usa il seguente comando

delete_transient( $transient );

ma insomma è un’opzione abbastanza particolare.

Un esempio più completo è il seguente

<?php

if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) {
 // Se è false vuol dire che non è presente oppure che deve essere rigenerata e questo facciamo

$special_query_results = new WP_Query( 'cat=5&order=random&tag=tech&post_meta_key=thumbnail' );
 set_transient( 'special_query_results', $special_query_results, 12 * HOUR_IN_SECONDS );
}

?>

Vediamo quindi un esempio più concreto. Che poi è alla base dei plugins di Cache come WP_Cache Totatal Cache etc. etc.
Questo esempio è ripreso direttamente dal sito della WordPress e ve lo lascio originale.

<?php 
// Check for transient. If none, then execute WP_Query
if ( false === ( $featured = get_transient( 'foo_featured_posts' ) ) ) {
 
 $featured = new WP_Query(
 array(
 'category' => 'featured',
 'posts_per_page' => 5
 ));

// Put the results in a transient. Expire after 12 hours.
 set_transient( 'foo_featured_posts', $featured, 12 * HOUR_IN_SECONDS );
} ?>
 
// Run the loop as normal
<?php if ( $featured->have_posts() ) : ?>
 
 <?php while ( $featured->have_posts() ) : $featured->the_post(); ?>
 // featured posts found, do stuff
 <?php endwhile; ?>
 
 <?php else: ?>
 // no featured posts found
<?php endif; ?>

<?php wp_reset_postdata(); ?>

Come potete vedere controlla se $featured ha i post caricati altrimenti li carica da database e li carica in foo_feature_posts nel database e ovviamente a questo punto sono a disposizione per essere visualizzati. Il resto insomma vedete bene che lo già trattato nelle precedenti guide.

 

 

Ovviamente la memorizzazione avviene nella tabella del database wp_options . Se fate un attimo mente locale noterete un funzionamento molto simile a quello già visto con le funzioni add_option() e in effetti sono molto simili. L’unica differenza che qui è introdotta un dato di scadenza.

Exit mobile version