Wordpress’i Bakıma Almak

Site Bakımda Site Bakımda   Ziyaretçiler ekranda Fatal error: Cannot redeclare wp_unregister_globals() hede hödö falan filan.... gibi hata mesajları görünce mutsuz olur. Wordpress’inizde sürüm güncellerken, kullandığınız tema üzerinde değişiklik yaparken, eklenti geliştirirken ya da yeni bir şey denerken web sitenizi geçici olarak kapatmanız gerekebilir.

Wordpress’inizi bakım moduna alabileceğiniz iki eklenti gördüm. Bunlar Maintenance Mode ve Site Maintenance eklentileri.

Ancak eklentilerle sorun yaşadıysanız, sitenizi kapatmak için bile eklenti kurmak istemiyorsanız ya da eklentilerle ilgili duygusal problemleriniz varsa saf PHP kodu değişikliklerinden oluşan benim yöntemimi kullanabilirsiniz.

Anlatacağım yöntem sadece Wordpress için değil, tek bir giriş noktası olan (Wordpress’de index.php) tüm betikler için geçerli.

Wordpress’de bir sayfa çağırdığınızda ilk index.php çalışır. Kaynak kodunu aşağıda görüyorsunuz.

 <?php /** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */

/** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */ require('./wp-blog-header.php'); ?>
``` Bu basit dosyanın tek amacı, bir sonraki dosyayı çağırmak ve temiz bir başlangıç yapmaktır. Ziyaretçilerin önünü, sisteme tek giriş noktası olan bu dosyada kesebiliriz.

Sitemizi bakım moduna alırken dikkat edeceğimiz bazı önemli noktalar var:

*   Bakım modu tüm siteyi kapsamalı. Örneğin insanlar *http://hödö.com/* adresine girince *“Sitemiz Bakımdadır”* yazısını görürken *http://hödö.com/bir-blog-girdisi/* adresine girince yamulmuş bir site görmemeliler.
*   Bakım modu sayfası sistem yüklenmeden (yani Wordpress’e dair hiçbir şey yüklenmeden) gelmeli. Böylece veritabanı bağlantısı çökse de wp-includes klasörünü silseniz de bakım modu yazısına bir şey olmayacak, ziyaretçiler arkada ne olup bittiğini bilemeyecekler. (denemedim ama eklenti halinde dağıtılanların bu adımı sağlayacağını hiç sanmıyorum.)
*   Bakım modu sayfası tarayıcı önbelleğinden etkilenmemeli.  
    Bakım modu sayfası koymanın en dandik yönetimi şudur: *index.php’*nin yanına bir tane *index.html* atarsınız ve içine bakımda yazarsınız. Ama önbelleğinde sitenin açılış sayfasının index.php olduğunu tutan tarayıcıların *index.html*’den haberi olmayacağı için siz sadece bazı ziyaretçilere bakımda olduğunuzu duyurabilirsiniz.
*   Bakım modu yazısı devredeyken sisteme erişebilmelisiniz. Bir üstte anlatılan yöntem şöyle geliştirilebilir. *index.php*’yi *index2.php* olarak adlandırır ve *index.php*’nize bakımda yazısını koyarsınız. Böylece insanlar bakımda yazısını görür. Ama sistem sizin için de doğru işlemeyebilir. Hoş değildir.
*   Bakım modu botlara *200 OK* headeri yerine *503 Service Temporarily Unavailable* headeri göndermelidir. Aksi halde botlar bakımda olduğunuzu anlamayıp içeriğinizin değiştiğini sanabilir, hatalı davranabilir ve başınızı ağrıtabilir.

Yukarıdaki maddelerde anlatılanlara dikkat edilerek oluşturulmuş, kendi sitelerimde bakım yaparken kullandığım kaynak kodu aşağıdadır. Wordpress'in *index.php*'sini aşağıdaki gibi değiştiriyoruz:

```php
 <?php

$bakim_modu = FALSE; $bakim_ip = "155.223.1.1"; /* Üst satıra kendi IP adresinizi yazmalısınız. */ /* Web sitesi sadece yukarıdaki IP sahibine açılacak. Diğerleri bakım mesajı görecek. Güncel IP adresinizi http://whatismyip.com adresinden öğrenebilirsiniz. */

if (($bakim_modu && ($bakim_ip == $_SERVER['REMOTE_ADDR'])) || !$bakim_modu) { /* Eğer web sitesi bakımda değilse veya izinli IP sisteme giriş yapıyorsa orijinal wordpress index.php'sindeki kodları çalıştır. Eğer index.php'nizde değişiklik yaptıysanız aşağıya olduğu gibi yansıtın. */

/** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */

/** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */ require('./wp-blog-header.php');

} else { /* Eğer web sitesi bakım halindeyse... */ ob_start(); /* Botlara web sitesinin geçici bakımda olduğu bilgisi gönderilir. Bir saat sonra tekrar denemeleri söylenir. */ header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); header('Retry-After: 3600'); header('Content-Type: text/html; charset=utf-8'); include ("kapali.html"); /* Bakım mesajının yer aldığı kapali.html adlı bir HTML dosyası oluşturun. Bu dosya index.php ile aynı konumda olmalı ve UTF-8 karakter setiyle kodlanmış bir dosya olmalıdır. */ }

?>

Dosyamızı bir defa böyle değiştirdikten sonra bakım zamanı tek yapmamız gereken php $bakim_modu = FALSE; satırını php $bakim_modu = TRUE; olarak değiştirmek ve ```php $bakim_ip = "155.223.1.1";


Böylece başkaları ve arama motorları sitemizi bakımda olarak görürken biz normal gezmeye devam edebilir ve yapacaklarımızı kapabiliriz.

### Uyarılar

*   Bakım modunda iken web sitesinin hiçbir yerinde 'Dikkat bakımda' yazmadığı için bakım modunu kapatmayı unutabilirsiniz, dikkat edin. :)
*   *kapali.html*’inizi tasarlayıp sitenize göndermeyi unutmayın, aksi halde hata mesajı alırsınız.
*   Wordpress’de sürüm güncellerken *index.php*’yi *güncellememeyi* unutmayın.

İyi geceler.