WordPress’te temaya özel tüm sayfa içeriğini cache’e almak için bir PHP kodu kullanabilirsiniz. Bu işlemi yaparken, WordPress’in cache eklentilerini kullanmak da bir seçenek olabilir, ancak manuel olarak PHP kodu ile yapmak istiyorsanız aşağıdaki örneği inceleyebilirsiniz.
Bu kod örneğinde, sayfa içeriklerini cache’e alarak daha hızlı yüklenmesini sağlayabilirsiniz. Kodları temanızın functions.php dosyasına ekleyebilirsiniz.
function start_output_buffer() {
ob_start('cache_page_output');
}
add_action('wp', 'start_output_buffer');
function cache_page_output($output) {
if (is_admin()) {
return $output;
}
$cache_key = md5($_SERVER['REQUEST_URI']);
$cache_dir = WP_CONTENT_DIR . '/cache/';
$cache_file = $cache_dir . $cache_key . '.html';
if (!is_dir($cache_dir)) {
mkdir($cache_dir, 0755, true);
}
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 3600))) {
return file_get_contents($cache_file);
} else {
file_put_contents($cache_file, $output);
return $output;
}
}
function clear_cache() {
$cache_dir = WP_CONTENT_DIR . '/cache/';
$files = glob($cache_dir . '*.html');
foreach ($files as $file) {
if (is_file($file)) {
unlink($file);
}
}
}
add_action('save_post', 'clear_cache');
add_action('deleted_post', 'clear_cache');
add_action('switch_theme', 'clear_cache');
Bu kod şu şekilde çalışır:
Start_output_buffer fonksiyonu wp aksiyonunda çalışır ve output buffering’i başlatır.
Cache_page_output fonksiyonu, sayfa çıktısını cache’e alır. Cache anahtarını URI’yi kullanarak oluşturur ve cache dosyasını belirli bir dizinde saklar. Eğer cache dosyası mevcutsa ve bir saatten (3600 saniye) daha yeni ise, cache dosyasını kullanır.
Clear_cache fonksiyonu, yeni bir gönderi kaydedildiğinde, silindiğinde veya tema değiştirildiğinde çalışarak tüm cache dosyalarını siler.
Bu temel cache mekanizması, temanızın performansını artırabilir. Ancak, daha gelişmiş cache ihtiyaçları için WP Super Cache, W3 Total Cache gibi eklentiler kullanmak da değerlendirilebilir.