Home / Mga gabay / Pagsasama ng Form ng Pakikipag-ugnayan sa WordPress Nang Walang Mga Plugin ng SMTP
GABAY SA PAGSASAMA · WORDPRESS & CMS

Pagsasama ng Form ng Pakikipag-ugnayan sa WordPress Nang Walang Mga Plugin ng SMTP

Tanggalin ang mga nabigong paghahatid ng wp_mail(), cleartext na pag-iimbak ng password sa wp_options, at malalaking plugin sa pamamagitan ng direktang pagruta ng mga pagsusumite ng contact sa WordPress sa mga endpoint ng Lugatu form.

1. Ang Problema sa WordPress SMTP Plugin

Karamihan sa mga site ng WordPress ay umaasa sa mga plugin tulad ng WP Mail SMTP upang magpadala ng mga abiso sa pakikipag-ugnayan sa pamamagitan ng PHP mail() o mga nakaimbak na kredensyal ng SMTP. Kapag nagbago ang pagho-host ng mga IP address o hinarangan ng mga provider ng pagho-host ang port 587/465, tahimik na nawawala ang mga katanungan.

2. Pagsasama-sama ng Server-Side sa pamamagitan ng wp_remote_post()

Para sa mga developer ng tema at custom na plugin, secure na ipasa ang mga pagsusumite ng form mula sa iyong WordPress server gamit ang iyong workspace API key nang hindi inilalantad ang mga lihim sa mga frontend na bisita.

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. Pagpipilian sa Direct Sandboxed Embed Iframe

Kung mas gusto mo ang zero PHP code, direktang mag-embed ng na-publish na Lugatu form sa anumang WordPress page o Elementor HTML block gamit ang aming sandboxed responsive na iframe.

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>

Invariant ng Seguridad at Pagpapatotoo

Tagubilin sa Seguridad: Tukuyin ang LUGATU_API_KEY sa loob ng wp-config.php sa labas ng web root, hindi kailanman sa mga script na naa-access ng kliyente o mga file ng pampublikong tema.

Pag-troubleshoot at Mga Karaniwang Error sa Pag-ingest

Ang wp_remote_post() ay nagbabalik ng cURL error 28: Nag-time out ang koneksyon

Tiyaking pinapayagan ng iyong hosting provider ang palabas na trapiko ng HTTPS sa port 443 hanggang sa www.lugatu.com.

Mga Madalas Itanong

Kailangan ko bang mag-install ng espesyal na plugin para magamit ang Lugatu sa WordPress?

Hindi. Maaari mong gamitin ang aming magaan na opisyal na WordPress connector o mag-embed lang ng mga form gamit ang karaniwang HTML iframe o AJAX snippet.

Handa nang gawin ang endpoint ng iyong form?

Magsimula nang libre sa ilang segundo. Walang kinakailangang credit card.

Magsimula nang Libre →