Canlı · durum OK
Dokümantasyon · OW Forms v1.1.0

OW Forms
Dokümantasyon

2026 için yeniden tasarlanan WordPress form oluşturucusu.

v1.1.0GPL-2.0-or-laterDokümantasyon

OW Forms — Dokümantasyon

WordPress için modern, GDPR-yerel bir form oluşturucu. Yazar: OptionWeb — Julien Daniel Eklenti ana sayfası: https://optionweb.dev/tr/addons/ow-forms/ Lisans: GPL-2.0-or-later Bu belgenin kapsadığı sürüm: 1.0.2


İçindekiler

  1. Genel bakış
  2. Kurulum
  3. Hızlı başlangıç — ilk formunuz
  4. Alan türleri
  5. Anti-spam yığını
  6. GDPR özellikleri
  7. E-posta bildirimleri
  8. Webhooks
  9. Dosya yüklemeleri
  10. Render: shortcode, Gutenberg, REST
  11. Contact Form 7 içe aktarıcısı
  12. Ayarlar referansı
  13. REST API
  14. Geliştirici hook'ları (filters & actions)
  15. OW Consent / OW Shield ile entegrasyon
  16. Uluslararasılaştırma
  17. Sorun giderme
  18. SSS

Genel bakış

OW Forms, şema güdümlü bir form oluşturucudur. Her form, alanlarını, doğrulamayı ve gönderim davranışını tanımlayan bir JSON belgesidir. Eklenti bu şemayı erişilebilir HTML olarak render eder, gönderimleri sunucuda doğrular, bunları dört katmanlı bir anti-spam yığınından geçirir, izin verdiğiniz şeyleri kalıcı hale getirir ve e-posta + webhook bildirimlerini tetikler.

Eklentide neler var (her şey ücretsiz, GPL-2):

  • 17 alan türlü JSON şema motoru
  • 4 katmanlı anti-spam: honeypot, time-trap, çok sağlayıcılı CAPTCHA, IP itibarı
  • Yerel GDPR onayı + saklama + DSAR
  • REST API (namespace owf/v1) — herkese açık submit + admin CRUD
  • Gutenberg bloğu + shortcode + PHP render API'si
  • HMAC ile imzalanmış giden webhooks
  • Tek tıkla Contact Form 7 içe aktarıcısı
  • Görsel tutarlılık için OW Canvas tema token'larını otomatik algılar

Bilerek YAPMADIKLARI:

  • Ödeme işleme (WooCommerce + özel bir checkout kullanın)
  • Basit ileri/geri ötesinde çoklu sayfa sihirbazları (özel bir wizard eklentisi kullanın)
  • v1'de drag-and-drop görsel oluşturucu (yalnızca JSON düzenleyici; görsel oluşturucu yol haritasında)

Kurulum

WordPress.org'dan (önerilen)

  1. WordPress admin → Eklentiler → Yeni Ekle
  2. OW Forms araması yapın
  3. Şimdi Kur'a, ardından Etkinleştir'e tıklayın

.zip yüklemeden

  1. ow-forms-1.0.2.zip dosyasını https://optionweb.dev/tr/addons/ow-forms/ adresinden indirin
  2. Eklentiler → Yeni Ekle → Eklenti Yükle
  3. Dosyayı seçin, Şimdi Kur'a, ardından Etkinleştir'e tıklayın

Gereksinimler

  • WordPress 6.0 veya üzeri
  • PHP 7.4 veya üzeri (8.1+ önerilir)
  • JSON sütun desteği olan MySQL/MariaDB (5.7+ / 10.2+)

Kurulan şeyler

Etkinleştirildiğinde OW Forms üç özel tablo oluşturur:

  • {prefix}_owf_submissions — gönderim payload'ları + spam meta verileri
  • {prefix}_owf_files — yüklenen dosyalar kaydı
  • {prefix}_owf_log — gönderim denetim izi

Ayrıca form şemalarını saklamak için kullanılan bir Custom Post Type owf_form (herkese açık sorgulanabilir değil).


Hızlı başlangıç

Etkinleştirme sonrası varsayılan bir "İletişim" formu otomatik olarak oluşturulur.

  1. Admin'de OW Forms → Formlar bölümüne gidin
  2. Varsayılan formun ID'sini not edin (ör. 1)
  3. Herhangi bir sayfa veya yazıya shortcode'u yapıştırın:
[owf_form id="1"]

…veya OW Forms Gutenberg bloğunu ekleyin ve açılır menüden formu seçin.

Hepsi bu. Form render edilir, gönderimleri kabul eder, admin_email adresine bir admin e-postası gönderir ve gönderimi veritabanına kaydeder.

Özelleştirmek için, formu OW Forms → Formlar → [Düzenle]'de açın ve doğrudan JSON şemasını değiştirin. Görsel bir oluşturucu v1.1 yol haritasındadır.


Alan türleri

OW Forms 17 alan türünü destekler. Şemadaki her alan, en az type ve name içeren bir nesnedir; çoğu ayrıca label, help, required, placeholder ve türe özgü seçenekleri de kabul eder.

typeAmaçÖnemli seçenekler
textTek satır metinplaceholder, pattern, maxlength
emailE-posta adresiOtomatik RFC 5322 doğrulaması
telTelefon numarasıEsnek doğrulama (E.164 uyumlu)
urlURLOtomatik http(s):// doğrulaması
numberSayısalmin, max, step
textareaÇok satırlı metinrows, maxlength
selectTekli açılır listeoptions: [{value, label}]
radioTekli seçimoptions: [{value, label}]
checkboxTekli booleandefault: bool
checkbox-groupÇoklu seçimoptions: [{value, label}]
dateTarih seçicimin, max (YYYY-MM-DD)
timeSaat seçicimin, max (HH:MM)
datetimeTarih + saatmin, max (YYYY-MM-DDTHH:MM)
fileDosya yüklememultiple: bool, accept
hiddenGizli değerİzleme için yararlı
rating1–5 yıldız değerlendirme
consentGDPR onay kutusuGDPR açıkken otomatik eklenir

Şema örneği

{
  "title": "Contact us",
  "fields": [
    {
      "type": "text",
      "name": "name",
      "label": "Your name",
      "required": true,
      "placeholder": "Jane Doe"
    },
    {
      "type": "email",
      "name": "email",
      "label": "Email",
      "required": true
    },
    {
      "type": "select",
      "name": "subject",
      "label": "How can we help?",
      "required": true,
      "options": [
        {"value": "quote",   "label": "Request a quote"},
        {"value": "support", "label": "Technical support"},
        {"value": "other",   "label": "Other"}
      ]
    },
    {
      "type": "textarea",
      "name": "message",
      "label": "Message",
      "required": true,
      "rows": 6
    }
  ],
  "submit": {
    "label": "Send",
    "success_message": "Thanks — we will reply within 24 hours.",
    "redirect_url": ""
  }
}

Alanların name değerleri, kaydedilen payload'da anahtarlar ve e-posta şablonlarında kullanabileceğiniz token'lar olur ({{name}}, {{email}}, vb.).


Anti-spam yığını

OW Forms paralel olarak dört bağımsız katman çalıştırır. Her katman bir puan katkısı atar; ≥ 80 puan alan bir gönderim sessizce düşürülür — hata mesajı döndürülmez, böylece botlar korumaya karşı yineleme yapamaz.

1. Honeypot

Botların doldurduğu ve insanların doldurmadığı görsel olarak gizli bir metin girişi. Ayar:

  • spam_honeypot_enabled (varsayılan: true)

2. Time-trap

Yapılandırılabilir bir eşikten daha hızlı tamamlanan gönderimleri reddeder (tipik botlar anında POST eder).

  • spam_timetrap_enabled (varsayılan: true)
  • spam_timetrap_min_seconds (varsayılan: 2)

3. CAPTCHA (çok sağlayıcılı)

Sağlayıcının API'sine karşı sunucudan sunucuya token doğrulaması. Şunlardan birini seçin:

  • turnstile — Cloudflare Turnstile (önerilen, gizlilik öncelikli, challenge UX'i yok)
  • recaptcha_v3 — Google reCAPTCHA v3 (görünmez)
  • hcaptcha — hCaptcha (görünür widget)
  • friendly_captcha — Friendly Captcha (self-hosted widget, MIT lisanslı, AB dostu)

spam_captcha_provider, spam_captcha_site_key ve spam_captcha_secret_key değerlerini Anti-spam ayarlar sekmesinde ayarlayın. Varsayılan none.

Not: Turnstile / reCAPTCHA / hCaptcha widget JS'leri sağlayıcının kendi origin'inden yüklenir (JS'leri sunucu tarafında bir origin imza kontrolü yapar). Friendly Captcha assets/js/vendor/ altında self-hosted'dur.

4. IP itibarı (isteğe bağlı)

OW Shield kuruluyken ve aktifken, OW Forms gönderimleri puanlamak için onun IP itibar akışını kullanır:

  • spam_owshield_iprep (varsayılan: true)
  • spam_block_disposable_emails (varsayılan: true) — @mailinator, @tempmail ve ~120 diğer geçici alan adını reddeder

Ek sezgisel kurallar

  • spam_min_words_per_text_area — textarea'larda en az N kelime ister
  • spam_max_links_per_submission — payload'da N'den fazla URL varsa reddeder
  • spam_blocklist_emails, spam_blocklist_words, spam_blocklist_ips — kendi listeleriniz

Loglama

Her spam kararı nedeniyle birlikte loglanır. Eşikleri körü körüne uçmadan ayarlamak için OW Forms → Gönderimler → filtre "spam" seçeneğine bakın.


GDPR özellikleri

GDPR uyumluluğu yereldir. Varsayılanlar muhafazakârdır; yalnızca bunun için hukuki danışmanlığa sahipseniz gevşetin.

Onay kutusu

gdpr_consent_required true (varsayılan) olduğunda her formun altına otomatik olarak bir onay kutusu eklenir. Metin yapılandırılabilir:

'gdpr_consent_text' => __(
    'I agree that my data will be processed to respond to my inquiry, in accordance with the privacy policy.',
    'ow-forms'
)

gdpr_auto_link_privacy açıksa (varsayılan), "privacy policy" / "gizlilik politikası" ifadeleri, OW Consent eklentisi etkinse onun gizlilik politikası URL'sine, aksi halde WP'de yapılandırdığınız Gizlilik Sayfasına otomatik olarak bağlanır.

IP saklama modları

store_ip ayarı:

DeğerSaklanan
noneHiçbir şey — hiçbir IP tutulmaz
pseudonymized (varsayılan)192.168.1.42192.168.1.0 (IPv4) / ilk 4 grup (IPv6)
fullTam IP — yalnızca yasal dayanağınız izin veriyorsa kullanın

User agent saklama

store_user_agent ayarı:

DeğerSaklanan
noneHiçbir şey
hashed (varsayılan)UA + wp_salt() SHA-256 değeri
fullKesilmiş UA dizesi (maks. 64 chars)

Saklama ve temizleme

Günlük bir cron, gdpr_retention_days (varsayılan: 1095 gün — potansiyel müşteri verileri için CNIL standardı) değerinden eski gönderimleri temizler. Otomatik temizlemeyi devre dışı bırakmak için 0 olarak ayarlayın.

gdpr_auto_delete_after_response true ise, bir gönderimi "işlendi" olarak işaretlemek onu yüklenen dosyalarla birlikte hemen siler.

DSAR — Veri sahibi erişimi / silme

Form e-postaları saklama sırasında wp_salt() ile hash'lenir. OW Consent aktifken bir e-posta adresi için DSAR silme işlemi gerçekleştirildiğinde, OW Forms email_hash ile eşleşen gönderimleri otomatik olarak siler ve şunu tetikler:

do_action( 'owf_gdpr_erased_for_email', $hash, $count );

OW Consent olmadan silmeyi manuel olarak çağırabilirsiniz:

OWF_GDPR::erase_by_email( 'user@example.com' );  // returns int count

E-posta bildirimleri

Şablonlar

Hem admin bildirimi hem de kullanıcı otomatik yanıtı {{token}} değişimini destekler:

TokenŞuna dönüşür
{{site_name}}get_bloginfo('name')
{{form_title}}Formun başlığı
{{form_id}}Sayısal form ID'si
{{submission_id}}Sayısal gönderim ID'si (saklanmadıysa 0)
{{date}}Gönderim zaman damgası
{{ip}}store_ip moduna göre IP
{{page_url}}Formun gönderildiği URL
{{all_fields}}Tüm alan anahtar/değer çiftleri
{{<field_name>}}name ile herhangi bir alan (ör. {{email}}, {{message}})

Ayarlar

AyarVarsayılanNotlar
default_recipient_emailboş → admin_emailForm başına schema.mail.recipient ile geçersiz kılınabilir
from_nameboşGönderenin görünen adı
from_emailboş → WP varsayılanıGönderen adresi
mail_htmltruefalse düz metne geçer
mail_admin_subject[{{site_name}}] New message via {{form_title}}
mail_admin_bodyboş → alanlardan otomatik oluşturulur
mail_user_autoreply_enabledtrue
mail_user_subjectWe have received your message
mail_user_bodyboş → genel onay
mail_failed_alert_emailboşMail gönderimi başarısız olduğunda bilgilendirilir

Form başına geçersiz kılma

Form şeması global değerleri geçersiz kılabilir:

{
  "mail": {
    "recipient": "sales@example.com",
    "subject": "New lead — {{name}}",
    "body": "Lead: {{name}}\\nEmail: {{email}}\\nMessage: {{message}}",
    "autoreply": true,
    "autoreply_subject": "Thanks, {{name}}!",
    "autoreply_body": "Hi {{name}},\\n\\nWe got your message."
  }
}

Webhooks

webhook_url ayarlandığında, her başarılı gönderim bir HTTP POST tetikler.

Payload (JSON)

{
  "form_id": 1,
  "form_title": "Contact",
  "submission_id": 42,
  "received_at": "2026-05-13T14:32:18+00:00",
  "fields": { "name": "Jane", "email": "jane@example.com", "message": "Hi" },
  "site": "https://example.com"
}

HMAC imzası

webhook_secret ayarlanmışsa, istek şunu içerir:

X-OWF-Signature: sha256=<hex digest of HMAC-SHA256(body, secret)>

Alıcı tarafı doğrulaması (Node örneği):

const expected = crypto
  .createHmac('sha256', SECRET)
  .update(rawBody)
  .digest('hex');
const provided = req.headers['x-owf-signature'].replace(/^sha256=/, '');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(provided))) {
  return res.status(401).end('bad sig');
}

Yeniden denemeler

Alıcı 5xx döndürür veya zaman aşımına uğrarsa, OW Forms üstel backoff ile yeniden dener (60 s → 5 dk → 30 dk). 3 başarısızlıktan sonra webhook kalıcı olarak başarısız diye loglanır ama gönderimi engellemez.


Dosya yüklemeleri

allow_file_uploads açıkken (varsayılan true), file türündeki herhangi bir alan kabul edilir. Pipeline:

  1. Sunucu tarafı doğrulama — dosya boyutu (max_file_size_mb, varsayılan 8 MB), uzantı allowlist'i (allowed_file_types) ve wp_get_mime_types() ile karşılıklı referans verilen bir finfo MIME kontrolü.
  2. Depolamawp-content/uploads/owf-uploads/YYYY/MM/<sha256>.<ext>, deny-all .htaccess (Apache) ve boş index.php (Nginx/IIS) ile.
  3. Veritabanı kaydı — dosya meta verileri + SHA-256 hash, üst gönderim ID'sine bağlı olarak {prefix}_owf_files içinde.
  4. Temizlik — bir gönderim silindiğinde (manuel olarak, saklama ile veya DSAR ile), bağlı tüm dosyalar kaldırılır.

Önemli: OW Forms WordPress medya kütüphanesini değil, özel bir izole yükleme yolu kullanır, bu nedenle yüklenen dosyalar standart /wp-json/wp/v2/media endpoint'i üzerinden keşfedilemez ve küçük resimler oluşturulmaz. Bu kasıtlıdır — form ekleri form sahibine özeldir.

İzin verilen dosya türleri (varsayılan)

pdf, jpg, jpeg, png, webp, doc, docx, xls, xlsx, csv, txt

Genişletmek için:

add_filter( 'owf_settings', function( $s ) {
    $s['allowed_file_types'] = array_merge(
        (array) $s['allowed_file_types'],
        array( 'odt', 'ods', 'zip' )
    );
    return $s;
} );

Render

Shortcode

[owf_form id="42"]
[owf_form slug="contact"]

id (sayısal yazı ID'si) veya slug (yazı slug'ı) — biri gereklidir.

Gutenberg bloğu

Blok düzenleyicide, blok ekleyicide "OW Forms" araması yapın ve açılır menüden formunuzu seçin.

PHP

echo OWF_Form::render( 42 );
// or
echo do_shortcode( '[owf_form id="42"]' );

REST

Form programatik olarak da gönderilebilir — bkz. REST API.


CF7 içe aktarıcısı

Contact Form 7 yüklüyse veya yüklü olduysa, OW Forms tek tıkla bir içe aktarıcı ile gelir.

OW Forms → Araçlar → Contact Form 7'den İçe Aktar

İçe aktarıcı:

  1. Veritabanınızdaki her wpcf7_contact_form yazısını tarar
  2. Shortcode tabanlı her CF7 formunu parse eder ve eşdeğer OW Forms şemasını oluşturur
  3. Alıcıyı, konuyu, başarı/hata mesajlarını ve alan türlerini korur
  4. Tüm post_content içindeki her [contact-form-7 id="..."] shortcode'unu (sayfalar, yazılar, custom post types) [owf_form id="..."] olarak yeniden yazar
  5. Sonuçları loglar: bulunan, içe aktarılan, atlanan (zaten içe aktarılmış) formlar

CF7 eklentisi daha sonra devre dışı bırakılabilir ve kaldırılabilir.

İçe aktarıcı idempotent'tir: iki kez çalıştırmak yinelenenler oluşturmaz. Zaten içe aktarılmış CF7 formları bir _owf_imported_from_cf7 meta anahtarı ile işaretlenir ve sonraki çalıştırmalarda atlanır.


Ayarlar referansı

Tüm ayarlar tek bir seçenek anahtarında, owf_settings'da, saklanır. Bunları programatik olarak okuyabilir veya geçersiz kılabilirsiniz:

$value = OWF_Core::setting( 'spam_timetrap_min_seconds' );
OWF_Core::update_settings( array( 'spam_timetrap_min_seconds' => 3 ) );

Tam varsayılanlar

array(
    // General
    'default_recipient_email'        => '',     // empty = admin_email
    'from_name'                      => '',
    'from_email'                     => '',
    'sender_uses_dpo'                => true,

    // Anti-spam
    'spam_honeypot_enabled'          => true,
    'spam_timetrap_enabled'          => true,
    'spam_timetrap_min_seconds'      => 2,
    'spam_captcha_provider'          => 'none',
    'spam_captcha_site_key'          => '',
    'spam_captcha_secret_key'        => '',
    'spam_owshield_iprep'            => true,
    'spam_block_disposable_emails'   => true,
    'spam_min_words_per_text_area'   => 0,
    'spam_max_links_per_submission'  => 3,
    'spam_blocklist_emails'          => array(),
    'spam_blocklist_words'           => array(),
    'spam_blocklist_ips'             => array(),

    // GDPR
    'gdpr_consent_required'          => true,
    'gdpr_consent_text'              => '...',
    'gdpr_auto_link_privacy'         => true,
    'gdpr_retention_days'            => 1095,
    'gdpr_auto_delete_after_response' => false,

    // Storage
    'store_submissions'              => true,
    'store_ip'                       => 'pseudonymized',
    'store_user_agent'               => 'hashed',
    'allow_file_uploads'             => true,
    'max_file_size_mb'               => 8,
    'allowed_file_types'             => array( 'pdf', 'jpg', 'jpeg', 'png',
                                                'webp', 'doc', 'docx', 'xls',
                                                'xlsx', 'csv', 'txt' ),

    // Notifications
    'mail_html'                      => true,
    'mail_admin_subject'             => '[{{site_name}}] New message via {{form_title}}',
    'mail_admin_body'                => '',
    'mail_user_autoreply_enabled'    => true,
    'mail_user_subject'              => 'We have received your message',
    'mail_user_body'                 => '',
    'mail_failed_alert_email'        => '',
    'webhook_url'                    => '',
    'webhook_secret'                 => '',

    // Rendering
    'style_preset'                   => 'auto',
    'button_label_default'           => 'Send',
    'success_message_default'        => 'Your message has been sent. We will reply within 24 hours.',
    'error_message_default'          => 'An error occurred. Please try again or contact us directly.',
    'inherit_theme_tokens'           => true,

    // Analytics (opt-in)
    'track_conversions'              => false,
    'conversion_event_name'          => 'generate_lead',
    'conversion_value'               => 0,
    'conversion_currency'            => 'EUR',
);

REST API

Tüm endpoint'ler owf/v1 namespace'i altında yaşar.

Herkese açık endpoint

YöntemYolİzin
POST/owf/v1/submitNonce korumalı (wp_rest)

Body:

{
  "form_id": 1,
  "fields": { "name": "Jane", "email": "jane@example.com", "message": "Hi" },
  "_owf_nonce": "<from wp_create_nonce('owf_submit_form')>",
  "_owf_time": 1736780000,
  "_owf_hp": ""
}

Yanıt (200):

{ "ok": true, "id": 42, "message": "Your message has been sent." }

Yanıt (422) doğrulama başarısız olduğunda:

{
  "ok": false,
  "errors": { "email": "Please enter a valid email" },
  "message": "Please review the fields in error."
}

Admin endpoint'leri (manage_options gerektirir)

YöntemYolAçıklama
GET/owf/v1/formsTüm formları listele
GET/owf/v1/forms/{id}Bir formu al
PUT/owf/v1/forms/{id}Formu güncelle
POST/owf/v1/forms/createForm oluştur
GET/owf/v1/submissionsGönderimleri listele (filtreler: form_id, status)
GET/owf/v1/submissions/{id}Bir gönderimi al
POST/owf/v1/submissions/{id}/handleİşlendi olarak işaretle (silebilir)
POST/owf/v1/importer/cf7CF7 içe aktarıcısını çalıştır
GET/POST/owf/v1/settingsEklenti ayarlarını oku veya yaz

Tüm admin endpoint'leri hem manage_options capability'sini hem de geçerli bir WP REST nonce'unu gerektirir.


Hooks (filters & actions)

Actions

/**
 * Fires after a submission has been processed and stored.
 *
 * @param int   $submission_id  Database ID (0 if not stored)
 * @param int   $form_id        Form ID
 * @param array $cleaned        Sanitized field payload
 * @param array $schema         Full form schema
 */
do_action( 'owf_submission_received', $submission_id, $form_id, $cleaned, $schema );
/**
 * Fires after a DSAR erasure has deleted matching submissions by email hash.
 *
 * @param string $email_hash   SHA-256(email + wp_salt())
 * @param int    $deleted_count
 */
do_action( 'owf_gdpr_erased_for_email', $email_hash, $deleted_count );

Filters

/**
 * Filter the resolved settings array (merged defaults + saved + per-request).
 */
apply_filters( 'owf_settings', array $settings );

/**
 * Whitelist of trusted reverse proxy IPs that may set X-Forwarded-For.
 * Without this OW Forms ignores proxy headers (to prevent IP spoofing).
 */
apply_filters( 'owf_trusted_proxies', array $proxies );

/**
 * List of disposable email domains rejected when `spam_block_disposable_emails`
 * is on.
 */
apply_filters( 'owf_disposable_domains', array $domains );

Önerilen pattern — tek kullanımlık alan adı listesini genişlet

add_filter( 'owf_disposable_domains', function( $list ) {
    return array_merge( $list, array(
        'example-throwaway.com',
        'company-blocked-domain.net',
    ) );
} );

Önerilen pattern — gönderimleri bir CRM'e gönder

add_action( 'owf_submission_received', function( $sid, $form_id, $cleaned ) {
    if ( $form_id !== 7 ) return;  // only the "Sales" form
    wp_remote_post( 'https://crm.example.com/leads', array(
        'headers' => array( 'Authorization' => 'Bearer ' . CRM_TOKEN ),
        'body'    => wp_json_encode( array(
            'email'   => $cleaned['email'],
            'name'    => $cleaned['name'],
            'message' => $cleaned['message'],
            'source'  => 'website-form',
        ) ),
        'headers' => array( 'Content-Type' => 'application/json' ),
    ) );
}, 10, 3 );

Entegrasyonlar

OW Canvas (tema)

OW Canvas teması etkinken, OW Forms görsel tutarlılık için onun CSS özel özelliklerini (--owc-ink, --owc-paper, --owc-accent, vb.) miras alır. inherit_theme_tokens = false ile devre dışı bırakın.

OW Consent

OW Consent etkinken:

  • GDPR onay kutusu bağlantısı, OW Consent gizlilik politikası URL'nize otomatik olarak yönlendirilir
  • Gönderimler OW Consent kayıtlarına bağlanır (ziyaretçinin bir onay ID çerezi varsa)
  • OW Consent'ten gelen DSAR silme akışları, aynı e-posta hash'i için OW Forms gönderimlerini otomatik olarak temizler

OW Shield

OW Shield etkinken ve spam_owshield_iprep açıkken, her gönderimin IP'si kabul edilmeden önce OW Shield'in itibar akışına karşı puanlanır.


Uluslararasılaştırma

Kaynak dil İngilizce'dir. languages/ow-forms-fr_FR.po altında bir Fransızca çevirisi gelir.

Çevirmenler için

.pot şablonu languages/ow-forms.pot'tadır. Eklenti WP.org'da onaylandıktan sonra translate.wordpress.org/projects/wp-plugins/ow-forms üzerinden çeviri gönderin. Yerel dağıtım için ow-forms-<locale>.mo dosyasını languages/ klasörüne bırakın.

.mo'yu yerel olarak derleme

msgfmt languages/ow-forms-fr_FR.po -o languages/ow-forms-fr_FR.mo

Sorun giderme

Form gönderiliyor ama hiç e-posta gelmiyor

  1. Sitenizin genel olarak mail gönderip gönderemediğini kontrol edin — başka bir eklentinin iletişim formundan veya Mail Tester ile test edin
  2. Gönderimin geldiğini doğrulamak için OW Forms → Gönderimler bölümüne bakın (geldiyse sorun teslimde, OW Forms'da değildir)
  3. mail_failed_alert_email değerini kendi adresinize ayarlayın — OW Forms, wp_mail() false döndürdüğünde size e-posta gönderir
  4. Bir SMTP eklentisi (Fluent SMTP, WP Mail SMTP, vb.) kurun — varsayılan PHP mail() fonksiyonu alıcı sunucuların %95'i tarafından reddedilir

CAPTCHA görünmüyor

  • spam_captcha_site_key ve spam_captcha_secret_key değerlerinin her ikisinin de ayarlandığını doğrulayın
  • Sayfayı DevTools'ta açın — sağlayıcı script URL'si 200 ile yüklenmelidir
  • reCAPTCHA için site alan adınız Google admin'de kayıtlı olmalıdır
  • Turnstile için Cloudflare admin'deki widget modu "Managed" veya "Non-interactive" olmalıdır

Dosyalar yükleniyor ama admin onları indiremiyor

Bu tasarım gereğidir — yüklenen dosyalar doğrudan değil, kimlik doğrulanmış bir PHP handler tarafından sunulur. manage_options'a sahip bir kullanıcı olarak giriş yaptığınızı kontrol edin.

CF7 içe aktarıcısı "0 form bulundu" diyor

İçe aktarıcı wpcf7_contact_form post type'ını tarar. CF7 zaten devre dışı bırakılmışsa ve yazılar silindiyse, içe aktarılacak hiçbir şey kalmamıştır. CF7'yi sadece içe aktarma için yeniden etkinleştirin, sonra tekrar devre dışı bırakın.

Gönderimler tablosu çok büyük

  • gdpr_retention_days değerini düşürün (varsayılan 1095 / 3 yıl)
  • Veritabanı denetim izi değil sadece e-posta teslimine ihtiyacınız varsa store_submissions'ı devre dışı bırakın
  • "İşlendi" durumunda silmek için gdpr_auto_delete_after_response = true ayarlayın

SSS

OW Forms ücretsiz mi? Evet. GPL-2.0-or-later. Pro sürümü, lisans anahtarı, ödeme arkasında kilitli özellik yoktur.

WordPress Multisite üzerinde çalışıyor mu? Evet — her sitenin beklenildiği gibi izole, kendi tabloları ve form kütüphanesi vardır.

Çok adımlı formları destekliyor mu? Şemada alan gruplama yoluyla temel ileri/geri navigasyon çalışır. Birinci sınıf bir wizard UX'i v1.1 yol haritasındadır.

Gönderimleri nasıl dışa aktarırım? OW Forms → Gönderimler → CSV Dışa Aktar. Dışa aktarma mevcut filtrelere (form, tarih aralığı, durum) saygı gösterir.

Formlarımı bir paywall veya login arkasında barındırabilir miyim? Evet — shortcode'u herhangi bir üyelik eklentisinin gating mantığına sarın veya PHP üzerinden bir is_user_logged_in() kontrolü içinde render edin.

E-posta pazarlama / CRM araçlarıyla entegre olur mu? Kutudan çıkar çıkmaz: webhook'lar (herhangi bir endpoint'e HMAC ile imzalanmış POST) ve form başına e-posta alıcıları. Brevo / Mailchimp / HubSpot / Pipedrive için owf_submission_received hook'una bağlanın ve sağlayıcının REST API'sini çağırın — bkz. Hooks bölümü.

Eklenti GDPR sertifikalı mı? Eklentinin varsayılanları CNIL / GDPR en iyi uygulamalarıyla uyumludur, ancak sertifikasyon, veri sorumlusu kurulumunuza özgü hukuki bir süreçtir. Biz teknik araçları sağlıyoruz; politikayı DPO'nuz onaylar.

Destek nerede?


OptionWeb tarafından geliştirildi — Julien Daniel, Châtelet, Belçika.