Slug sistemi değişikliği en geniş etki alanına sahip kırılgan değişiklik. URL'lerinde alt çizgi barındıran her sayfa, taşıma betiğini çalıştırmadan 1.4.0'a geçişten sonra bozulacak.

JekCMS 1.4.0 ile birlikte gelen php tools/migrate-slugs.php --dry-run komutu herhangi bir değişiklik yapmadan önce etkilenecek kayıtları listeler. Bu komutu her zaman veritabanı yedeği üzerinde çalıştırın; doğrudan production üzerinde denemeyin. Hazır hissettiğinizde --dry-run bayrağını kaldırıp komutu tekrar çalıştırın.

$config Değişkeni Artık Yok

İkinci kritik değişiklik global $config süperküreselinin kaldırılması. Yapılandırma değerlerine artık Config::get('anahtar') veya kısayol fonksiyonu olan config('anahtar') üzerinden erişilmeli. $config'u doğrudan okuyan herhangi bir tema ya da eklenti 1.4.0'da tanımsız değişken hatasıyla başarısız olacak. Yükseltmeden önce kod tabanınızda grep -r "\$config\[" . ile arama yapın ve bulunan her kullanımı güncelleyin.

Oturum Depolaması Dosyadan Veritabanına Taşındı

Oturum yönetimi dosya tabanlıdan veritabanı tabanlı depolamaya geçti. Bu değişiklik çok sunuculu kurulumların güvenilirliğini artırıyor ve bazı paylaşımlı hostlarda aralıklı giriş başarısızlıklarına neden olan izin sorunlarını ortadan kaldırıyor. Geçiş için yükseltilmiş kuruluma ilk istek gelmeden önce php tools/migrate-sessions.php çalıştırılması gerekiyor. Halihazırda giriş yapmış kullanıcılar bir kez oturumdan çıkacak.

Taşıma Betiği Ne Yapıyor?

tools/migrate-1.4.php betiği slug yeniden yazımını, gönderi içeriğindeki dahili bağlantı güncellemesini, önbellek temizliğini ve site haritası yenilenmesini tek seferde gerçekleştiriyor. Her değişikliği logs/migration-1.4.log dosyasına kaydediyor. %80 otomasyon rakamı, siz tarafınızdan sağlanması gereken bir type_map yapılandırma dosyası gerektiren özel gönderi türü slug eşlemesini kapsam dışı bırakıyor.

Diğer Üç Kırılgan Değişiklik

Slug sistemi, config süperküresel kaldırma ve oturum depolama geçişinin ötesinde, belirli kullanım durumlarını etkileyen üç ek kırılgan değişiklik daha mevcut.

Değişiklik 4: Medya Yolu Formatı

Veritabanında saklanan medya yolu artık uploads/ önekini içermiyor. Önceki sürümler uploads/images/2026/01/foto.avif gibi yollar saklıyordu; v1.4.0 images/2026/01/foto.avif saklıyor ve gösterim sırasında UPLOADS_URL ekliyor. Bu, siteler alan adları arasında taşındığında oluşan çift uploads/uploads/ hatasını önlüyor. Taşıma betiği bunu otomatik yönetiyor ancak yolları birleştiren özel sorgular güncellenmelidir.

// Eski (v1.3)
$url = SITE_URL . '/uploads/' . $post['featured_image'];
// Sonuç: https://site.com/uploads/uploads/images/foto.avif (HATA)

// Yeni (v1.4)
$url = UPLOADS_URL . '/' . $post['featured_image'];
// Sonuç: https://site.com/uploads/images/foto.avif (DOGRU)

Değişiklik 5: Hook Öncelik Sistemi

Hook öncelikleri 1-100 tam sayı ölçeğinden 1-999 ölçeğine değişti. v1.3'te 100'ün üzerinde bir öncelikle kaydedilen herhangi bir hook, v1.4'te farklı bir göreli konumda çalışacak. Taşıma betiği functions.php dosyalarını öncelik değerleri için tarar ve olası çakışmalar hakkında uyarır; ancak doğru öncelik temanın amacına bağlı olduğundan bunları otomatik olarak değiştirmez.

Değişiklik 6: Kullanımdan Kaldırılan Yardımcıların Silinmesi

v1.2'de kullanımdan kaldırılan on iki yardımcı fonksiyon tamamen silindi. En sık kullanılanlar the_title() (get_post_title() ile değiştirildi), the_content() (get_post_content() ile değiştirildi) ve site_info() (Config::get('site.name') ile değiştirildi) idi. php tools/check-deprecated.php çalıştırmak temanızı tarar ve kaldırılmış fonksiyonun her kullanımını listeler.

Geri Alma Prosedürü

Taşıma başarısız olursa veya beklenmedik sonuçlar üretirse geri alma süreci açıktır:

  • Taşıma öncesi alınan yedekten veritabanını geri yükleyin
  • core/ dizinini v1.3 sürümüyle değiştirin
  • cache/ dizinini tamamen temizleyin
  • Yapılandırma dosyası değişikliği gerekmez — v1.3 config dosyaları ileriye dönük uyumludur

Taşıma betiği herhangi bir değişiklik yapmadan önce backups/pre-migration-{timestamp}.sql konumunda otomatik veritabanı yedeği oluşturuyor. Bu dosya doğrudan içe aktarılabilen eksiksiz bir mysqldump çıktısı. 500 gönderili ve 2.000 medya girişli bir sitede yedek dosyası yaklaşık 45 MB boyutunda ve tüm taşıma süreci 12-18 saniye sürüyor.

Taşıma Sonrası Doğrulama Kontrol Listesi

Taşımayı çalıştırdıktan sonra yükseltmeyi tamamlanmış kabul etmeden önce şu maddeleri doğrulayın:

  • Rastgele 5 gönderi URL'sini ziyaret edip yönlendirme olmadan yüklendiklerini onaylayın
  • Taşımadan 48 saat sonra Google Search Console'da tarama hatalarını kontrol edin
  • sitemap.xml dosyasının yalnızca 200 durum kodlu URL'ler içerdiğini doğrulayın
  • Yönetim paneli giriş akışını test edin — oturumlar sıfırlandı, tüm kullanıcılar tekrar giriş yapmalı
  • Sıfır uyarı olduğunu doğrulamak için php tools/check-deprecated.php son bir kez daha çalıştırın
  • API entegrasyonlarının (n8n, webhook) JWT tokenlarıyla hala kimlik doğrulama yaptığını onaylayın