WordPress için Composer ve Autoloading ile Gelişmiş Eklenti Yapısı Kurma

WordPress, uzun süredir PHP tabanlı sistemlerin en yaygınlarından biri olarak kullanılmakta. Ancak klasik WordPress eklenti geliştirme pratikleri, çoğu zaman modern PHP yaklaşımlarından uzaktır. Günümüzde geliştiriciler, sürdürülebilirlik, yeniden kullanılabilirlik ve daha temiz kod yapıları için modern araçlara yönelmektedir. İşte bu noktada Composer ve PSR-4 autoloading sistemleri devreye girerek, WordPress eklenti geliştiricilerine güçlü bir yapı sunar.

Bu makalede, WordPress için Composer kullanarak bağımlılık yönetimi yapılması, PSR-4 standardı ile sınıfların otomatik olarak yüklenmesi ve modüler, ölçeklenebilir bir eklenti mimarisinin kurulması ele alınacaktır.

1. Neden Composer ve Autoloading?

WordPress’in klasik yapısında tüm fonksiyonlar tek bir dosyada ya da dağınık şekilde çağrılır. Bu da projelerin büyüdükçe yönetilemez hale gelmesine neden olur. Modern PHP dünyasında ise şu ihtiyaçlar ön plandadır:

  • Bağımlılık yönetimi: Harici kütüphaneleri manuel olarak dahil etmek yerine, Composer ile versiyon kontrollü bir şekilde yönetmek.
  • Kod organizasyonu: Kodları sınıflara ayırmak ve mantıksal bir dizin yapısı oluşturmak.
  • Autoloading: Gereken sınıfları manuel require etmeye gerek kalmadan otomatik olarak yüklemek.
  • Test Edilebilirlik ve Sürdürülebilirlik: Kodun daha modüler olması test süreçlerini kolaylaştırır.

2. Composer ile Proje Başlatma

Composer Kurulumu

Eğer Composer sisteminizde kurulu değilse, terminalden aşağıdaki komutlarla kurulabilir:

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

WordPress Eklentisi İçin Composer Başlatma

Eklenti klasörünüzde terminali açın ve:

composer init

Adımları takip ederek composer.json dosyasını oluşturun.

3. PSR-4 Autoloading Tanımı

Oluşturulan composer.json dosyasına aşağıdaki autoload bölümünü ekleyin:

"autoload": {
  "psr-4": {
    "MyPlugin\\": "src/"
  }
}

Bu yapı sayesinde src/ klasörü altındaki her PHP sınıfı, MyPlugin\ isim alanı altında otomatik yüklenecek.

Ardından aşağıdaki komutla autoload klasörlerini oluşturun:

composer dump-autoload

4. Dosya ve Sınıf Yapısı Örneği

my-plugin/
├── src/
│   ├── Admin/
│   │   └── SettingsPage.php
│   ├── Front/
│   │   └── ShortcodeHandler.php
│   └── Core/
│       └── Plugin.php
├── my-plugin.php
├── composer.json
└── vendor/

src/Core/Plugin.php:

namespace MyPlugin\Core;

class Plugin {
    public function init() {
        add_action('init', [$this, 'register_shortcodes']);
    }

    public function register_shortcodes() {
        // shortcode register işlemleri
    }
}

my-plugin.php (Ana eklenti dosyası):

/**
 * Plugin Name: My Modern Plugin
 */

require_once __DIR__ . '/vendor/autoload.php';

use MyPlugin\Core\Plugin;

$plugin = new Plugin();
$plugin->init();

5. Harici Paketlerle Geliştirme

Composer’ın en büyük avantajlarından biri binlerce PHP kütüphanesine erişim sunmasıdır. Örneğin bir HTTP istemcisi olarak Guzzle eklemek isterseniz:

composer require guzzlehttp/guzzle

Kullanımı:

use GuzzleHttp\Client;

$client = new Client();
$response = $client->get('https://api.example.com/data');
$data = json_decode($response->getBody(), true);

6. WordPress ile Uyumlu Yapıyı Korumak

WordPress, belirli dosya yapısı ve fonksiyonlara bağımlıdır. Modern yapılarla çalışırken aşağıdaki kurallara dikkat edilmelidir:

  • Global fonksiyonlar yerine sınıf bazlı yapılar kullanılmalı.
  • Eklenti etkinleştirme/deaktive etme gibi işlemler için sınıf metodları kullanılmalı.
  • WordPress hook ve filter sistemleri içinde add_action, add_filter gibi fonksiyonlar sınıf içinden çağrılmalı.

7. Geliştirici Denetimi ve Test

Modern yapı sayesinde, PHPUnit gibi test araçlarını Composer üzerinden kolayca entegre edebilirsiniz:

composer require --dev phpunit/phpunit

Bu sayede eklenti fonksiyonlarınızı test edebilir, CI/CD süreçlerine entegre edebilirsiniz.

8. Sürüm Kontrol ve .gitignore

Composer kullandığınızda vendor/ klasörü genellikle .gitignore dosyasına eklenir:

/vendor
/composer.lock

Ancak deploy sırasında composer install --no-dev komutu kullanılarak bağımlılıklar tekrar kurulabilir.

9. Değerlendirme: WordPress’te Modern Geliştirme

Composer ve autoloading kullanımı, WordPress eklenti geliştirmede oyunun kurallarını değiştirmektedir. Sadece daha temiz bir kod yapısı değil, aynı zamanda daha hızlı geliştirme süreçleri, daha kolay bakım ve modern PHP kütüphanelerinden faydalanma imkânı sunar.

Artık WordPress eklentileri sadece fonksiyon dosyalarının bir araya gelmesinden ibaret değil; kurumsal düzeyde, test edilebilir, sürdürülebilir ve genişleyebilir bir yapıya sahip olabilir.

WPW

WPW

İçerik yazarı, teknolojiye meraklı, grafik tasarımcı, sosyal medya ve seo danışmanı...

Articles: 856