Wordpress İle Özel Bir İletişim Formu Eklentisi Nasıl Yapılır?

Wordpress İle Özel Bir İletişim Formu Eklentisi Nasıl Yapılır?
Wordpress İle Özel Bir İletişim Formu Eklentisi Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Kendi eklentinizi yazmaya başlamadan önce geliştirme ortamınızın hazır olduğundan emin olmalısınız. WordPress 6.x ve üzeri sürümlerle uyumlu bir PHP 8.2+ ortamı, modern sözdizimi kullanımı için zorunludur.

  • Yerel Geliştirme Ortamı: LocalWP veya XAMPP gibi bir araç kullanarak yerel bir WordPress kurulumu yapın.
  • Kod Editörü: VS Code veya PHPStorm gibi eklenti geliştirmeyi destekleyen bir IDE kullanın.
  • WP_DEBUG: Geliştirme aşamasında hataları görmek için wp-config.php dosyanızda define('WP_DEBUG', true); satırının aktif olduğundan emin olun.

Eklenti İskeletini Oluşturma

WordPress eklentileri, wp-content/plugins/ dizini altında bir klasör yapısıyla çalışır. Öncelikle ozel-iletisim-formu adında bir klasör oluşturun ve içine ozel-iletisim-formu.php dosyasını ekleyin. Bu dosya, eklentinizin kimlik kartı olacaktır.


/**
 * Plugin Name: Özel İletişim Formu
 * Description: WordPress için özel geliştirilmiş iletişim formu eklentisi.
 * Version: 1.0.0
 * Author: Yazılım Eğitmeni
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Doğrudan erişimi engelle
}

Yukarıdaki kod, eklentinizin WordPress yönetici panelinde görünmesini sağlar. ABSPATH kontrolü, güvenlik açısından kritik bir öneme sahiptir; dosyanın doğrudan tarayıcı üzerinden çağrılmasını engeller.

HTML Form Yapısını Oluşturma

Kullanıcıların veri girişi yapabileceği formu oluşturmak için bir kısa kod (shortcode) tanımlayacağız. Bu sayede formu dilediğiniz sayfada [ozel_iletisim_formu] etiketiyle gösterebilirsiniz.


function ozel_iletisim_formu_shortcode() {
    ob_start();
    ?>


Form Verilerini İşleme ve E-posta Gönderimi

Formun HTML yapısını oluşturduktan sonra, kullanıcının gönderdiği verileri yakalamamız ve e-posta olarak iletmemiz gerekir. WordPress'in yerleşik wp_mail() fonksiyonu, bu işlem için en güvenli ve standart yöntemdir. Aşağıdaki kod bloğu, formun gönderilip gönderilmediğini kontrol eder ve verileri işler.

function ozel_form_isleme() {
    if (isset($_POST['ozel_form_gonder'])) {
        $isim = sanitize_text_field($_POST['ad_soyad']);
        $email = sanitize_email($_POST['eposta']);
        $mesaj = sanitize_textarea_field($_POST['mesaj']);

        $alici = get_option('admin_email');
        $konu = 'Yeni İletişim Formu Mesajı: ' . $isim;
        $icerik = "Gönderen: $isim ($email)\n\nMesaj:\n$mesaj";

        if (wp_mail($alici, $konu, $icerik)) {
            echo '

Mesajınız başarıyla gönderildi!

'; } else { echo '

Bir hata oluştu, lütfen tekrar deneyin.

'; } } } add_action('init', 'ozel_form_isleme');

Burada sanitize_text_field ve sanitize_email gibi fonksiyonları kullanarak gelen verileri temizledik. Bu, SQL enjeksiyonu ve XSS (Cross-Site Scripting) saldırılarını önlemek için hayati bir adımdır.

Performans ve Güvenlik İpuçları

Eklentinizin sadece ihtiyaç duyulan sayfalarda yüklenmesi, sitenizin hızını doğrudan etkiler. Formun bulunduğu sayfalar dışında CSS ve JavaScript dosyalarınızın yüklenmesini engellemek için wp_enqueue_script fonksiyonunu koşullu kullanmalısınız.

  • Nonce Kullanımı: Form gönderimlerine mutlaka bir güvenlik anahtarı (nonce) ekleyin. Bu, formun dışarıdan kötü niyetli botlar tarafından tetiklenmesini engeller.
  • Veritabanı Sorguları: Eğer form verilerini veritabanına kaydetmek isterseniz, $wpdb sınıfını kullanarak hazırlıklı ifadeler (prepared statements) ile çalışın.
  • Asenkron Gönderim: Kullanıcı deneyimini artırmak için form gönderimini AJAX ile yapmayı düşünebilirsiniz. Bu sayede sayfa yenilenmeden işlem tamamlanır.

Nonce eklemek için formunuzun içerisine şu satırı yerleştirin:

Ardından, form işleme fonksiyonunuzun en başında şu kontrolü yapın:

if (!isset($_POST['ozel_form_nonce']) || !wp_verify_nonce($_POST['ozel_form_nonce'], 'ozel_form_aksiyon')) {
    die('Güvenlik doğrulaması başarısız.');
}

Bu basit güvenlik katmanları, eklentinizin hem profesyonel görünmesini sağlar hem de WordPress ekosistemindeki güvenlik standartlarına uygun hale getirir.

Bu yazıya tepkinizi paylaşın:
Selin Yılmaz

Kullanıcı odaklı rehberler hazırlama konusunda uzmanım. Adım adım anlatımlarla karmaşık süreçleri herkes için anlaşılır kılıyorum.

Yorumlar (0)

Yorum Yaz