Otomatisasi Undangan Elementor & Spreadsheet
E

Elementor Auto-Generator

Integrasi Google Spreadsheet + Foto Drive ➔ Tema Elementor WordPress

INVOICE

🚀 Buat Undangan Elementor Otomatis

Pilih pesanan dari Spreadsheet dan pilih Tema Elementor Anda. Sistem akan menduplikasi halaman tema tersebut di WordPress dan mengisi seluruh data + foto pengantin secara otomatis.

ID halaman/post Tema Elementor yang akan digandakan.

Otomatis menjadi: domain.com/rizky-annisa

📋 Data Baris Spreadsheet (Hasil Baca ke Samping): 0 Foto Siap
Invoice (Kolom C): -
Susunan (Kolom D): -
Mempelai Pria (Kolom E-F): -
Mempelai Wanita (Kolom K-L): -
Akad (Kolom Q-S): -
Resepsi (Kolom U-W): -

⚙️ Cara Kerja di Elementor Anda (Pasang 1x Saja)

  1. Di halaman Master Tema Elementor Anda, beri kode penanda pada teks/link yang ingin diganti otomatis (klik kode di bawah untuk menyalin):
    {{invoice}}
    {{susunan_pengantin}}
    {{pria_nama_lengkap}}
    {{pria_nama_panggilan}}
    {{pria_instagram}}
    {{wanita_nama_lengkap}}
    {{wanita_nama_panggilan}}
    {{akad_hari_tanggal}}
    {{akad_tempat}}
    {{resepsi_hari_tanggal}}
    {{resepsi_tempat}}
    {{foto_pria}}
    {{foto_wanita}}
    {{foto_cover}}
  2. Pasang kode jembatan PHP di bawah ini ke WordPress Anda (bisa lewat plugin gratis WPCode / Code Snippets atau taruh di functions.php).
  3. Selesai! Setiap ada pesanan masuk di Spreadsheet, Anda tinggal klik tombol Buat & Terbitkan Undangan di samping.
/**
 * SNIPPET OTOMATISASI UNDANGAN ELEMENTOR DARI SPREADSHEET
 * Pasang di WPCode / Code Snippets / functions.php WordPress Anda
 */
add_action('rest_api_init', function () {
    register_rest_route('undangan-auto/v1', '/create', array(
        'methods' => 'POST',
        'callback' => 'buat_undangan_elementor_otomatis',
        'permission_callback' => '__return_true',
    ));
});

function buat_undangan_elementor_otomatis($request) {
    $params = $request->get_json_params();
    if (($params['secret'] ?? '') !== 'UNDANGAN-AUTO-2026') {
        return new WP_REST_Response(array('status' => 'gagal', 'message' => 'Secret Key salah!'), 403);
    }

    $template_id = intval($params['template_id'] ?? 0);
    $source_post = get_post($template_id);
    if (!$source_post) {
        return new WP_REST_Response(array('status' => 'gagal', 'message' => 'ID Tema Elementor tidak ditemukan!'), 404);
    }

    $replacements = $params['replacements'] ?? array();
    $slug = sanitize_title($params['slug'] ?? 'undangan-' . time());
    $title = sanitize_text_field($params['title'] ?? 'The Wedding');

    // 1. Buat Post / Halaman Baru
    $new_post_id = wp_insert_post(array(
        'post_title'   => $title,
        'post_name'    => $slug,
        'post_status'  => 'publish',
        'post_type'    => $source_post->post_type,
        'post_content' => $source_post->post_content,
    ));

    // 2. Salin seluruh Meta Elementor & ganti semua variabel {{...}}
    $meta = get_post_meta($template_id);
    foreach ($meta as $key => $values) {
        foreach ($values as $value) {
            if ($key === '_elementor_data') {
                foreach ($replacements as $search => $replace) {
                    // Escape untuk format JSON Elementor
                    $json_replace = substr(json_encode((string)$replace), 1, -1);
                    $value = str_replace($search, $json_replace, $value);
                }
                update_post_meta($new_post_id, '_elementor_data', wp_slash($value));
            } else {
                update_post_meta($new_post_id, $key, maybe_unserialize($value));
            }
        }
    }

    // Bersihkan cache CSS Elementor agar desain langsung tampil sempurna
    if (class_exists('\Elementor\Plugin')) {
        \Elementor\Plugin::$instance->files_manager->clear_cache();
    }

    return new WP_REST_Response(array(
        'status' => 'sukses',
        'post_id' => $new_post_id,
        'url' => get_permalink($new_post_id),
        'edit_url' => admin_url('post.php?post=' . $new_post_id . '&action=elementor')
    ), 200);
}