آموزش وردپرس

ساخت فرم تماس در وردپرس بدون استفاده از افزونه فرم

وحید بهنام3 دقیقه مطالعه0 بازدید0 دیدگاه

اگر تا به امروز برای افزودن فرم تماس به سایت وردپرس‌تان به افزونه‌های پیچیده وابسته بودید، شاید وقت آن رسیده که یک روش مستقل و انعطاف‌پذیر را امتحان کنید. در این راهنمای گام‌به‌گام، با کدهای ساده اما قدرتمند، ساختار HTML، پردازش PHP و تنظیمات ایمیل را از صفر می‌سازید. هر بخش با توضیح مختصر و نکات عملی همراه است تا درک دقیق‌تری از نحوه کار هر قطعه داشته باشید. به‌علاوه، نکات امنیتی و بهینه‌سازی را نیز می‌آموزید تا فرم‌تان هم کارآمد و هم ایمن بماند. با پیروی از این راهکارها، می‌توانید فرم تماس سفارشی خود را بدون وابستگی به افزونه‌های سنگین، به‌سرعت در هر پوسته‌ای پیاده‌سازی کنید. نتیجه‌گیری این است که کنترل کامل بر ظاهر و رفتار فرم، در دسترس شماست و می‌توانید آن را مطابق نیازهای دقیق سایت‌تان تنظیم کنید.

فهرست مطالب

درک ساختار فرم ساده HTML

در ابتدا برای ساخت یک فرم تماس ساده، باید به دو بخش اصلی فرم - ساختار کلی (تگ

) و فیلدهای ورودی (تگ‌های ،

نکتهٔ عملی: قبل از افزودن این فرم به قالب وردپرس، حتماً از تابع wp_nonce_field() برای جلوگیری از حملات CSRF استفاده کنید و در فایل functions.php یک هک (hook) به admin_post_nopriv_* و admin_post_* اضافه کنید تا داده‌ها به‌درستی پردازش شوند. این تنظیمات ساده باعث می‌شود فرم شما امن، قابل‌اعمال و بدون نیاز به افزونهٔ فرم‌ساز باشد.

ایجاد فیلدهای ورودی با کد

برای ساخت یک فرم تماس ساده در وردپرس بدون استفاده از افزونه، اولین گام اضافه کردن فیلدهای ورودی به‌صورت کد است. می‌توانید این کد را در فایل قالب (مثلاً page-contact.php) یا داخل یک shortcode بگذارید تا در هر صفحه‌ای قابل فراخوانی باشد. در اینجا از عناصر استاندارد HTML مانند و

بعد از دریافت داده‌ها، مهم است که ورودی‌ها را پاک‌سازی (sanitize) و اعتبارسنجی کنید تا از حملات XSS و injection جلوگیری شود. در هوک admin_post_nopriv_handle_contact_form می‌توانید از توابع وردپرس مانند sanitize_text_field()، sanitize_email() و wp_kses_post() استفاده کنید. نمونه‌ای از پردازش داده‌ها به شکل زیر است:

CODE
function handle_contact_form() {
    if ( ! wp_verify_nonce( $_POST['_wpnonce'], 'contact_form' ) ) {
        wp_die( 'دسترسی غیرمجاز' );
    }

    $name    = sanitize_text_field( $_POST['cf_name'] );
    $email   = sanitize_email( $_POST['cf_email'] );
    $message = wp_kses_post( $_POST['cf_message'] );

    // در اینجا می‌توانید ایمیل بفرستید یا در دیتابیس ذخیره کنید
    wp_redirect( home_url( '/thanks/' ) );
    exit;
}
add_action( 'admin_post_nopriv_handle_contact_form', 'handle_contact_form' );
add_action( 'admin_post_handle_contact_form', 'handle_contact_form' );
فیلدعنصر HTMLتوابع پاک‌سازیقیدهای اعتبارسنجی
نامsanitize_text_field()required, minlength = 2
ایمیلsanitize_email()required, format email
پیام