bakimda
💻 Bilgisayar, 💾 Programlama

WordPress’i Bakıma Almak

Site BakımdaZiyaretç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

   $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

$bakim_modu = FALSE;

satırını

$bakim_modu = TRUE;

olarak değiştirmek ve

$bakim_ip = "155.223.1.1";

satırına güncel IP adresimizi yazmak. (Buradan öğrenebilirsiniz.)

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.

👋 🚨 Yeni yazılardan haberdar olmak ister misiniz? 👇
Etiketler

WordPress’i Bakıma Almak 11 yorum aldı.

  1. ben sadece resim göstermek istiyorum onu nasıl yapabilirim. oluşturacağımız html in içine mi atacağız resim şeyini?

    1. HTML'in içine istediğiniz resim dosyasının adresini img tag'i ile verebilirsiniz. HTML'in içine ne ekleyeceğiniz tamamen size bağlı. 🙂

  2. Merhaba, wordpress sitem için hangi index.php'yi güncellemem gerek? Ben public html içindekini, wpcontent klasöründekini ve temanın index.php'sini değiştirerek denedim ama bir türlü değişmedi anasayfam. Ne yapabilirim?

  3. Merhaba, bu kodu uzun yıllardır kullanıyorum, gerçekten harika çalışıyor, en azından yabancı servis sağlayıcılarda. Web sitelerim için sunucu değişikliği yapıp abd lokasyonlu sunuculardan yerli bir firmanın Türkiye lokasyonlu sunucularına taşıdım. Aslında sitelerimde her şey düzgün çalışıyor fakat tek sorunum bu yöntemin çalışmıyor olması. Bakım modunu etkinleştirdiğimde kapali.html devreye giriyor fakat ip adresim tanımlanmıyor yada ne oluyorsa siteyi görüntüleyemiyorum, gördüğüm tek şey kapali.html. Bu her hangi bir php eklentisinin eksik olmasından mı yoksa başka bir şeyden mi kaynaklanıyor anlayamadım fakat internet hizmetime statik ip hizmeti de dahil yani ip adresi kaynaklı değil. Bu konuda bir fikriniz olabilir mi?

    1. Merhaba,

      Koda bir goz attim, ancak bir fikir uretemedim. Tek aklima gelen, belki bir sebepten dolayi (farkli server vs.), index.php hic cagrilmiyordur. Sadece bir tahmin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir