<?php
if (!defined(‘ABSPATH’)) exit;
/* =========================================================
1) ÖZEL POST TYPE
========================================================= */
add_action(‘init’, function () {
register_post_type(‘dilli_siparis’, [
‘labels’ => [
‘name’ => ‘Çeviri Siparişleri’,
‘singular_name’ => ‘Çeviri Siparişi’,
],
‘public’ => false,
‘show_ui’ => true,
‘menu_icon’ => ‘dashicons-media-text’,
‘supports’ => [‘title’],
]);
});
/* =========================================================
2) FORM GÖNDERİMİ
========================================================= */
add_action(‘init’, function () {
if (!isset($_POST[‘dilli_form_submit’])) {
return;
}
if (!isset($_POST[‘dilli_form_nonce’]) || !wp_verify_nonce($_POST[‘dilli_form_nonce’], ‘dilli_form_action’)) {
wp_die(‘Güvenlik doğrulaması başarısız.’);
}
$ad_soyad = sanitize_text_field($_POST[‘ad_soyad’] ?? ”);
$email = sanitize_email($_POST[’email’] ?? ”);
$telefon = sanitize_text_field($_POST[‘telefon’] ?? ”);
$kaynak_dil = sanitize_text_field($_POST[‘kaynak_dil’] ?? ”);
$hedef_dil = sanitize_text_field($_POST[‘hedef_dil’] ?? ”);
$aciklama = sanitize_textarea_field($_POST[‘aciklama’] ?? ”);
$teslimat = sanitize_text_field($_POST[‘teslimat’] ?? ”);
$musteri_tipi = sanitize_text_field($_POST[‘musteri_tipi’] ?? ”);
$firma_unvani = sanitize_text_field($_POST[‘firma_unvani’] ?? ”);
$vergi_dairesi = sanitize_text_field($_POST[‘vergi_dairesi’] ?? ”);
$vergi_no = sanitize_text_field($_POST[‘vergi_no’] ?? ”);
$fatura_adresi = sanitize_textarea_field($_POST[‘fatura_adresi’] ?? ”);
$odeme_turu = sanitize_text_field($_POST[‘odeme_turu’] ?? ”);
$ek_hizmetler = [];
if (!empty($_POST[‘ek_hizmetler’]) && is_array($_POST[‘ek_hizmetler’])) {
$ek_hizmetler = array_map(‘sanitize_text_field’, $_POST[‘ek_hizmetler’]);
}
$errors = [];
if (empty($ad_soyad)) $errors[] = ‘Ad Soyad zorunludur.’;
if (empty($email) || !is_email($email)) $errors[] = ‘Geçerli bir e-posta giriniz.’;
if (empty($telefon)) $errors[] = ‘Telefon zorunludur.’;
if (empty($kaynak_dil)) $errors[] = ‘Kaynak dil seçiniz.’;
if (empty($hedef_dil)) $errors[] = ‘Hedef dil seçiniz.’;
if (empty($teslimat)) $errors[] = ‘Teslimat tipi seçiniz.’;
if (empty($odeme_turu)) $errors[] = ‘Ödeme türü seçiniz.’;
$uploaded_file_url = ”;
$uploaded_file_name = ”;
if (!empty($_FILES[‘belge’][‘name’])) {
require_once ABSPATH . ‘wp-admin/includes/file.php’;
$uploaded = wp_handle_upload($_FILES[‘belge’], [‘test_form’ => false]);
if (isset($uploaded[‘error’])) {
$errors[] = ‘Dosya yükleme hatası: ‘ . $uploaded[‘error’];
} else {
$uploaded_file_url = esc_url_raw($uploaded[‘url’]);
$uploaded_file_name = basename($uploaded[‘file’]);
}
}
if (!empty($errors)) {
set_transient(‘dilli_form_errors’, $errors, 60);
wp_safe_redirect(wp_get_referer());
exit;
}
$siparis_no = ‘DL-‘ . date(‘YmdHis’) . ‘-‘ . wp_rand(100, 999);
$post_id = wp_insert_post([
‘post_type’ => ‘dilli_siparis’,
‘post_status’ => ‘publish’,
‘post_title’ => $siparis_no . ‘ – ‘ . $ad_soyad,
]);
if ($post_id) {
update_post_meta($post_id, ‘siparis_no’, $siparis_no);
update_post_meta($post_id, ‘ad_soyad’, $ad_soyad);
update_post_meta($post_id, ’email’, $email);
update_post_meta($post_id, ‘telefon’, $telefon);
update_post_meta($post_id, ‘kaynak_dil’, $kaynak_dil);
update_post_meta($post_id, ‘hedef_dil’, $hedef_dil);
update_post_meta($post_id, ‘aciklama’, $aciklama);
update_post_meta($post_id, ‘teslimat’, $teslimat);
update_post_meta($post_id, ‘ek_hizmetler’, $ek_hizmetler);
update_post_meta($post_id, ‘musteri_tipi’, $musteri_tipi);
update_post_meta($post_id, ‘firma_unvani’, $firma_unvani);
update_post_meta($post_id, ‘vergi_dairesi’, $vergi_dairesi);
update_post_meta($post_id, ‘vergi_no’, $vergi_no);
update_post_meta($post_id, ‘fatura_adresi’, $fatura_adresi);
update_post_meta($post_id, ‘odeme_turu’, $odeme_turu);
update_post_meta($post_id, ‘dosya_url’, $uploaded_file_url);
update_post_meta($post_id, ‘dosya_adi’, $uploaded_file_name);
}
$admin_email = ‘info@dillitercumanlik.com’;
$ek_hizmetler_text = !empty($ek_hizmetler) ? implode(‘, ‘, $ek_hizmetler) : ‘Seçilmedi’;
$dosya_text = $uploaded_file_url ? $uploaded_file_url : ‘Dosya yüklenmedi’;
$mail_subject = ‘Yeni Çeviri Siparişi – ‘ . $siparis_no;
$mail_message = “Yeni bir çeviri siparişi oluşturuldu.\n\n”;
$mail_message .= “Sipariş No: {$siparis_no}\n”;
$mail_message .= “Ad Soyad: {$ad_soyad}\n”;
$mail_message .= “E-posta: {$email}\n”;
$mail_message .= “Telefon: {$telefon}\n”;
$mail_message .= “Kaynak Dil: {$kaynak_dil}\n”;
$mail_message .= “Hedef Dil: {$hedef_dil}\n”;
$mail_message .= “Teslimat: {$teslimat}\n”;
$mail_message .= “Ek Hizmetler: {$ek_hizmetler_text}\n”;
$mail_message .= “Müşteri Tipi: {$musteri_tipi}\n”;
$mail_message .= “Firma Ünvanı: {$firma_unvani}\n”;
$mail_message .= “Vergi Dairesi: {$vergi_dairesi}\n”;
$mail_message .= “Vergi No: {$vergi_no}\n”;
$mail_message .= “Fatura Adresi: {$fatura_adresi}\n”;
$mail_message .= “Ödeme Türü: {$odeme_turu}\n”;
$mail_message .= “Açıklama: {$aciklama}\n”;
$mail_message .= “Dosya: {$dosya_text}\n”;
wp_mail($admin_email, $mail_subject, $mail_message);
set_transient(‘dilli_form_success’, [
‘siparis_no’ => $siparis_no,
‘odeme_turu’ => $odeme_turu,
‘ad_soyad’ => $ad_soyad,
], 120);
wp_safe_redirect(wp_get_referer());
exit;
});
/* =========================================================
3) SHORTCODE
========================================================= */
add_shortcode(‘dilli_ceviri_formu’, function () {
ob_start();
$errors = get_transient(‘dilli_form_errors’);
$success = get_transient(‘dilli_form_success’);
if ($errors) {
delete_transient(‘dilli_form_errors’);
echo ‘<div class=”dilli-alert dilli-alert-error”><ul>’;
foreach ($errors as $error) {
echo ‘<li>’ . esc_html($error) . ‘</li>’;
}
echo ‘</ul></div>’;
}
if ($success) {
delete_transient(‘dilli_form_success’);
echo ‘<div class=”dilli-alert dilli-alert-success”>’;
echo ‘<strong>Siparişiniz başarıyla alındı.</strong><br>’;
echo ‘Sipariş Numaranız: <strong>’ . esc_html($success[‘siparis_no’]) . ‘</strong><br><br>’;
if ($success[‘odeme_turu’] === ‘Havale / FAST’) {
echo ‘<strong>Havale / FAST Bilgileri</strong><br>’;
echo ‘Alıcı: DİLLİ Tercümanlık<br>’;
echo ‘IBAN: TR00 0000 0000 0000 0000 0000 00<br>’;
echo ‘Açıklama: ‘ . esc_html($success[‘siparis_no’]) . ‘ – ‘ . esc_html($success[‘ad_soyad’]) . ‘<br><br>’;
} else {
echo ‘<a class=”dilli-pay-btn” href=”https://odeme-linkiniz-buraya.com” target=”_blank” rel=”noopener”>Kredi Kartı ile Öde</a>’;
}
echo ‘</div>’;
}
?>
<div class=”dilli-form-wrap”>
<div class=”dilli-form-head”>
<h2>Online Çeviri Siparişi</h2>
<p>Belgenizi yükleyin, dil ve teslimat tercihlerinizi seçin, ödeme yönteminizi belirleyin.</p>
</div>
<form class=”dilli-multistep-form” method=”post” enctype=”multipart/form-data”>
<?php wp_nonce_field(‘dilli_form_action’, ‘dilli_form_nonce’); ?>
<div class=”dilli-steps”>
<div class=”dilli-step-item active” data-step=”1″>1. Dosya Yükle</div>
<div class=”dilli-step-item” data-step=”2″>2. Fiyat ve Teslimat</div>
<div class=”dilli-step-item” data-step=”3″>3. Bilgiler ve Ödeme</div>
</div>
<div class=”dilli-step-panel active” data-step=”1″>
<div class=”dilli-grid”>
<div>
<label>Ad Soyad *</label>
<input type=”text” name=”ad_soyad” required>
</div>
<div>
<label>E-posta *</label>
<input type=”email” name=”email” required>
</div>
<div>
<label>Telefon / WhatsApp *</label>
<input type=”text” name=”telefon” required>
</div>
<div>
<label>Belgenizi Yükleyin</label>
<input type=”file” name=”belge” accept=”.pdf,.doc,.docx,.jpg,.jpeg,.png”>
</div>
<div>
<label>Kaynak Dil *</label>
<select name=”kaynak_dil” required>
<option value=””>Seçiniz</option>
<option>Türkçe</option>
<option>İngilizce</option>
<option>Almanca</option>
<option>Arapça</option>
<option>Rusça</option>
<option>Fransızca</option>
<option>Farsça</option>
<option>İspanyolca</option>
<option>İtalyanca</option>
<option>Azerice</option>
<option>Ukraynaca</option>
</select>
</div>
<div>
<label>Hedef Dil *</label>
<select name=”hedef_dil” required>
<option value=””>Seçiniz</option>
<option>Türkçe</option>
<option>İngilizce</option>
<option>Almanca</option>
<option>Arapça</option>
<option>Rusça</option>
<option>Fransızca</option>
<option>Farsça</option>
<option>İspanyolca</option>
<option>İtalyanca</option>
<option>Azerice</option>
<option>Ukraynaca</option>
</select>
</div>
<div class=”full”>
<label>Açıklama / Not</label>
<textarea name=”aciklama” rows=”5″></textarea>
</div>
</div>
<div class=”dilli-nav”>
<button type=”button” class=”dilli-next”>Devam Et</button>
</div>
</div>
<div class=”dilli-step-panel” data-step=”2″>
<div class=”dilli-grid”>
<div class=”full”>
<label>Teslimat Türü *</label>
<div class=”dilli-options”>
<label><input type=”radio” name=”teslimat” value=”Standart Teslim” required> Standart Teslim</label>
<label><input type=”radio” name=”teslimat” value=”Hızlı Teslim” required> Hızlı Teslim</label>
</div>
</div>
<div class=”full”>
<label>Ek Hizmetler</label>
<div class=”dilli-options”>
<label><input type=”checkbox” name=”ek_hizmetler[]” value=”Son Okuma”> Son Okuma</label>
<label><input type=”checkbox” name=”ek_hizmetler[]” value=”Noter Onayı”> Noter Onayı</label>
<label><input type=”checkbox” name=”ek_hizmetler[]” value=”Apostil”> Apostil</label>
<label><input type=”checkbox” name=”ek_hizmetler[]” value=”Kargo ile Gönderim”> Kargo ile Gönderim</label>
<label><input type=”checkbox” name=”ek_hizmetler[]” value=”Ek Kopya”> Ek Kopya</label>
<label><input type=”checkbox” name=”ek_hizmetler[]” value=”Dijital Sertifika”> Dijital Sertifika</label>
</div>
</div>
</div>
<div class=”dilli-nav”>
<button type=”button” class=”dilli-prev”>Geri Dön</button>
<button type=”button” class=”dilli-next”>Devam Et</button>
</div>
</div>
<div class=”dilli-step-panel” data-step=”3″>
<div class=”dilli-grid”>
<div>
<label>Müşteri Tipi</label>
<select name=”musteri_tipi”>
<option value=””>Seçiniz</option>
<option>Bireysel</option>
<option>Kurumsal</option>
</select>
</div>
<div>
<label>Firma Ünvanı</label>
<input type=”text” name=”firma_unvani”>
</div>
<div>
<label>Vergi Dairesi</label>
<input type=”text” name=”vergi_dairesi”>
</div>
<div>
<label>Vergi No</label>
<input type=”text” name=”vergi_no”>
</div>
<div class=”full”>
<label>Fatura Adresi</label>
<textarea name=”fatura_adresi” rows=”4″></textarea>
</div>
<div class=”full”>
<label>Ödeme Türü *</label>
<div class=”dilli-options”>
<label><input type=”radio” name=”odeme_turu” value=”Havale / FAST” required> Havale / FAST</label>
<label><input type=”radio” name=”odeme_turu” value=”Kredi Kartı” required> Kredi Kartı</label>
</div>
</div>
</div>
<div class=”dilli-nav”>
<button type=”button” class=”dilli-prev”>Geri Dön</button>
<button type=”submit” name=”dilli_form_submit” value=”1″>Siparişi Oluştur</button>
</div>
</div>
</form>
</div>
<style>
.dilli-form-wrap{max-width:980px;margin:30px auto;padding:28px;background:#fff;border-radius:16px;box-shadow:0 10px 30px rgba(0,0,0,.08)}
.dilli-form-head{text-align:center;margin-bottom:24px}
.dilli-form-head h2{margin:0 0 10px;font-size:32px;line-height:1.2}
.dilli-form-head p{margin:0;color:#666}
.dilli-steps{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:24px}
.dilli-step-item{flex:1;min-width:200px;padding:12px 14px;border-radius:12px;background:#f3f4f6;font-weight:600;text-align:center;opacity:.65}
.dilli-step-item.active{opacity:1;background:#0f172a;color:#fff}
.dilli-step-panel{display:none}
.dilli-step-panel.active{display:block}
.dilli-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.dilli-grid .full{grid-column:1/-1}
.dilli-form-wrap label{display:block;margin-bottom:8px;font-weight:600}
.dilli-form-wrap input[type=”text”],
.dilli-form-wrap input[type=”email”],
.dilli-form-wrap input[type=”file”],
.dilli-form-wrap select,
.dilli-form-wrap textarea{width:100%;border:1px solid #d9d9d9;border-radius:10px;padding:12px 14px;background:#fff;box-sizing:border-box}
.dilli-options{display:flex;gap:12px 18px;flex-wrap:wrap;padding:8px 0}
.dilli-options label{display:flex;align-items:center;gap:8px;font-weight:500;margin:0}
.dilli-nav{display:flex;justify-content:space-between;gap:12px;margin-top:26px}
.dilli-nav button,.dilli-pay-btn{display:inline-block;border:none;border-radius:10px;padding:13px 22px;font-weight:700;cursor:pointer;text-decoration:none;background:#0f172a;color:#fff}
.dilli-alert{max-width:980px;margin:20px auto;padding:16px 18px;border-radius:12px}
.dilli-alert-error{background:#fff1f2;border:1px solid #fecdd3;color:#9f1239}
.dilli-alert-success{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}
.dilli-alert ul{margin:0;padding-left:18px}
@media (max-width:768px){.dilli-grid{grid-template-columns:1fr}}
</style>
<script>
document.addEventListener(‘DOMContentLoaded’, function () {
const form = document.querySelector(‘.dilli-multistep-form’);
if (!form) return;
const steps = form.querySelectorAll(‘.dilli-step-item’);
const panels = form.querySelectorAll(‘.dilli-step-panel’);
let currentStep = 1;
function showStep(step) {
steps.forEach(item => {
item.classList.toggle(‘active’, parseInt(item.dataset.step) === step);
});
panels.forEach(panel => {
panel.classList.toggle(‘active’, parseInt(panel.dataset.step) === step);
});
currentStep = step;
}
form.querySelectorAll(‘.dilli-next’).forEach(btn => {
btn.addEventListener(‘click’, function () {
if (currentStep < 3) showStep(currentStep + 1);
});
});
form.querySelectorAll(‘.dilli-prev’).forEach(btn => {
btn.addEventListener(‘click’, function () {
if (currentStep > 1) showStep(currentStep – 1);
});
});
});
</script>
<?php
return ob_get_clean();
});

Deutsch
العربية
中文 (中国)
فارسی
Français
हिन्दी
English
Español
Русский
Українська
Ελληνικά