Home / Panduan / Integrasi Formulir Kontak WordPress Tanpa Plugin SMTP
PANDUAN INTEGRASI · WORDPRESS & CMS

Integrasi Formulir Kontak WordPress Tanpa Plugin SMTP

Hilangkan pengiriman wp_mail() yang gagal, penyimpanan kata sandi cleartext di wp_options, dan plugin besar dengan merutekan pengiriman kontak WordPress langsung ke titik akhir formulir Lugatu.

1. Masalah dengan Plugin SMTP WordPress

Sebagian besar situs WordPress mengandalkan plugin seperti WP Mail SMTP untuk mengirim pemberitahuan kontak melalui PHP mail() atau kredensial SMTP yang disimpan. Ketika alamat IP hosting berubah atau penyedia hosting memblokir port 587/465, pertanyaan akan hilang secara diam-diam.

2. Integrasi Sisi Server melalui wp_remote_post()

Untuk pengembang tema dan plugin khusus, teruskan pengiriman formulir dengan aman dari server WordPress Anda menggunakan kunci API ruang kerja Anda tanpa mengungkapkan rahasia kepada pengunjung frontend.

functions.php php
<?php
// Secure WordPress server-side form forwarding
function handle_custom_contact_submission() {
    if ( ! isset( $_POST['contact_nonce'] ) || ! wp_verify_nonce( $_POST['contact_nonce'], 'contact_action' ) ) {
        wp_send_json_error( array( 'message' => 'Security check failed.' ), 403 );
    }

    // Silently drop automated spam if honeypot trap is filled
    if ( ! empty( $_POST['_gotcha'] ) ) {
        wp_send_json_success( array( 'message' => 'Thank you! Message received.' ) );
        return;
    }

    $name    = sanitize_text_field( $_POST['name'] ?? '' );
    $email   = sanitize_email( $_POST['email'] ?? '' );
    $message = sanitize_textarea_field( $_POST['message'] ?? '' );

    $payload = array(
        'fields' => array(
            'name'    => $name,
            'email'   => $email,
            'message' => $message,
        ),
    );

    $api_url = 'https://www.lugatu.com/api/v1/forms/' . LUGATU_FORM_GUID . '/submissions';

    $response = wp_remote_post( $api_url, array(
        'headers' => array(
            'Authorization'   => 'Bearer ' . LUGATU_API_KEY,
            'Content-Type'    => 'application/json',
            'Idempotency-Key' => wp_generate_uuid4(),
        ),
        'body'    => wp_json_encode( $payload ),
        'timeout' => 10,
    ) );

    if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) >= 400 ) {
        wp_send_json_error( array( 'message' => 'Failed to deliver message.' ), 500 );
    }

    wp_send_json_success( array( 'message' => 'Thank you! Message received.' ) );
}
add_action( 'wp_ajax_custom_contact', 'handle_custom_contact_submission' );
add_action( 'wp_ajax_nopriv_custom_contact', 'handle_custom_contact_submission' );

3. Opsi Penyematan Iframe Sandbox Langsung

Jika Anda lebih suka tanpa kode PHP, sematkan formulir Lugatu yang diterbitkan langsung di halaman WordPress mana pun atau blok HTML Elementor menggunakan iframe responsif sandbox kami.

wordpress-embed.html html
<iframe
  src="https://www.lugatu.com/embed/forms/YOUR_PUBLIC_FORM_ID"
  width="100%"
  height="540"
  frameborder="0"
  style="border:none; border-radius:16px; overflow:hidden;"
  title="Contact Form">
</iframe>

Keamanan & Otentikasi Invarian

Instruksi Keamanan: Tetapkan LUGATU_API_KEY di dalam wp-config.php di luar root web, jangan pernah dalam skrip yang dapat diakses klien atau file tema publik.

Pemecahan Masalah & Kesalahan Penyerapan Umum

wp_remote_post() mengembalikan kesalahan CURL 28: Waktu koneksi habis

Pastikan penyedia hosting Anda mengizinkan lalu lintas HTTPS keluar pada port 443 ke www.lugatu.com.

Pertanyaan yang Sering Diajukan

Apakah saya perlu menginstal plugin khusus untuk menggunakan Lugatu di WordPress?

Tidak. Anda dapat menggunakan konektor WordPress resmi kami yang ringan atau cukup menyematkan formulir menggunakan iframe HTML standar atau cuplikan AJAX.

Siap membuat titik akhir formulir Anda?

Mulailah secara gratis dalam hitungan detik. Tidak diperlukan kartu kredit.

Mulai Gratis →