💻 Bilgisayar, 💾 Programlama

WordPress’i Bakıma Almak

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

   $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.

Etiketler

WordPress’i Bakıma Almak 9 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?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir