• Membuat plugin wordpress untuk mengirim notifikasi komentar

    Saya baru sadar bahwa ternyata WordPress tidak mengirimkan notifikasi ketika seseorang membalas komentar pada suatu artikel. Admin websitenya sih dapat email notifikasi bahwa ada komentar baru masuk, tapi si pemberi komentar sebelumnya bakal tidak tau kalau ada yang memberikan balasan atau respons pada komentarnya, walaupun yang memberikan balasan adalah si admin website. Jadi saya buat plugin sederhana…

    Saya baru sadar bahwa ternyata WordPress tidak mengirimkan notifikasi ketika seseorang membalas komentar pada suatu artikel. Admin websitenya sih dapat email notifikasi bahwa ada komentar baru masuk, tapi si pemberi komentar sebelumnya bakal tidak tau kalau ada yang memberikan balasan atau respons pada komentarnya, walaupun yang memberikan balasan adalah si admin website.

    Jadi saya buat plugin sederhana yang punya tugas sangat sederhana,  mengecek kalau ada komentar baru masuk yang berupa balasan pada sebuah komentar, maka akan dikirim email notifikasi ke pemilik komentar sebelumnya.

    (lebih…)

  • Ngulik WordPress

    Beberapa bulan terakhir saya lebih sering dapet project terkait dengan WordPress Development. Mulai dari pembuatan theme simple untuk keperluan re-design suatu instansi sampai pembuatan plugin yang cukup unik dan “menantang” dari sisi development. Saya sendiri gak asing sebenarnya dengan WordPress karena pekerjaan saya di kantor sebelumnya juga full WordPress theme developer. Walaupun ada banyaak bad-mouth tentang WordPress, tapi…

    Beberapa bulan terakhir saya lebih sering dapet project terkait dengan WordPress Development. Mulai dari pembuatan theme simple untuk keperluan re-design suatu instansi sampai pembuatan plugin yang cukup unik dan “menantang” dari sisi development. Saya sendiri gak asing sebenarnya dengan WordPress karena pekerjaan saya di kantor sebelumnya juga full WordPress theme developer. Walaupun ada banyaak bad-mouth tentang WordPress, tapi ya pasar gak bohong, 25% web di dunia pakai WordPress 😉

    Salah satu yang lagi saya kerjakan kali ini adalah project yang skala nya cukup besar, atau bisa dibilang yang terbesar yang pernah saya handle pada platform WordPress. Salah satu toko online yang menjual pakaian anak yang cukup famous dengan sales sampai 250 ribu pcs per 3 bulannya (semoga gak salah info), sedang melakukan migrasi dari sistem mereka yang lama (magento) ke WordPress (dengan woocommerce), dan saya bersyukur dapat terlibat langsung pada projek ini. Projek ini bukan sekedar bikin theme, tapi juga meliputi sistem back office, membership, stock inventory dan beberapa hal lainnya yang semuanya dilakukan diatas platform WordPress.  Kebayang bakal dapet pengalaman handling WordPress untuk very high traffic.

    (lebih…)

  • Mengirim dan Tracking email newsletter dengan laravel dan mailgun

    Salah satu project terbaru saya adalah membuat sebuah newsletter engine, yang secara garis besar tujuannya adalah memberikan kemudahan untuk para sales / internet marketing untuk mengirim email newsletter kepada para konsumen (ataupun target konsumennya). Konten dari newsletter sendiri akan diambil secara otomatis dari berbagai sosial media. Salah satu fitur utamanya adalah tentu saja, mengirim email…

    Salah satu project terbaru saya adalah membuat sebuah newsletter engine, yang secara garis besar tujuannya adalah memberikan kemudahan untuk para sales / internet marketing untuk mengirim email newsletter kepada para konsumen (ataupun target konsumennya). Konten dari newsletter sendiri akan diambil secara otomatis dari berbagai sosial media.

    Salah satu fitur utamanya adalah tentu saja, mengirim email newsletter, dan kemudian melakukan tracking untuk mengetahui berapa email yang terkirim, berapa email yang dibuka atau berapa email yang melakukan klik pada link yang ingin di promoin, ataupun klik link unsubscribe dan juga ‘mark as spam’. Saya menggunakan mailgun untuk email engine nya karena secara out of the box, sudah menyediakan fitur tersebut, dan juga lebih efisien di banding membangun email engine sendiri yang bakal lebih banyak makan waktu dan kemungkinan bakal di tandai sebagai spam oleh provider layanan email adalah sangat besar. Selain itu, mailgun juga sangat di support oleh laravel, PHP Framework yang saya gunakan untuk membangun projek ini. Laravel menyediakan driver untuk mailgun sehingga hanya dengan sedikit konfigurasi, mailgun akan terintegrasi dengan baik pada laravel.

    Tentang Mailgun

    Mailgun adalah penyedia layanan email as services dimana intinya sih kamu bisa mengirim email menggunakan server mereka. Dengan adanya mailgun, developer gak perlu bikin email server sendiri, atau kuatir email yang dikirim akan masuk ke spam, atau juga menjaga server agar tetap ‘sehat’ sehingga para email provider (gmail, yahoo, etc) tidak menganggap server kamu sebagai server yang mencurigakan dan memasukkan semua email dari server mu ke folder spam. Ada banyak fitur lain dari mailgun yang bisa di lihat di website mereka

    Mailgun dan Laravel

    Seperti yang sudah saya singgung diatas, laravel menyediakan driver untuk menggunakan mailgun sebagai email engine. Sebenarnya sih mailgun sendiri punya PHP SDK sendiri yang bakal bantuin kamu berinteraksi dengan API nya secara mudah, tapi kalau projek mu menggunakan laravel, maka akan lebih bijak kalau menggunakan “laravel way” nya, karena… ya emang itu kan salah satu fungsi menggunakan framework? 😃 Supaya kamu dan rekan-rekan mu sesama developer punya bahasa yang sama untuk melakukan beberapa macam kegiatan yang sudah di sediakan oleh framework.

    Untuk setting mailgun di laravel, kamu bisa di dokumentasi laravel, thanks to dotenv, karena kamu bisa setup secara mudah dengan cara edit file .env pada root folder laravel. dan masukkan parameter berikut

    MAIL_DRIVER=
    MAIL_HOST=
    MAIL_USERNAME=
    MAIL_PASSWORD=
    MAIL_DOMAIN= 
    MAIL_SECRET=

    Data untuk mengisi masing-masing parameter diatas bisa dilakukan setelah melakukan registrasi di web mailgun, kalau hanya untuk keperluan testing, kamu bisa pakai fitur free dengan batasan 10.000 email per bulan. lumayan tuh 🙂

    Setelah registrasi selesai, disana ada sandbox domain yang bisa dipakai, atau mau menggunakan custom domain sendiri juga boleh, saat ini saya masih menggunakan sandbox karena memang masih tahap development. Nah, di halaman detail domain, akan terdapat informasi untuk mengisi file .env diatas tadi.

    Mengirim Email

    Untuk mengirim email, karena menggunakan fitur built-in laravel, kamu bisa tinggal ikut dokumentasi laravel mail.

    Mail::send(
        'campaign/templates/newsletter',
        $data,
        function ( $message ) use ( $args ) {
            $message->from( "noreply@example.com" )
                    ->subject( 'Example Newsletter' )
                    ->to( $args[ 'sendto' ] );
        }
    );

    Anyway, Sampai sekarang saya masih takjub dengan betapa laravel membuat mengirim email menjadi lebih mudah dan eksplisit seperti ini (sebelumnya saya menggunakan codeigniter dan juga raw PHP, ribet dan gak elegan)

    Memberi Tagging

    Mailgun memang memberikan fitur data analitik untuk email yang terkirim, tapi data analitik ini secara global, bukan untuk masing-masing email yang terkirim. Namun mailgun menyediakan juga fitur tagging, atau bahasa gampangnya penanda email setiap melakukan pengiriman email. Sebagai contoh untuk kasus saya, sebelum mengirim email, setiap email yang akan dikirim akan disimpan di database dan memiliki field ID masing-masing. Lalu saya gunakan ID ini untuk menjadi tagging pada email yang dikirim, sehingga setiap email akan memiliki ID / Tagging yang unik.

    Sebelumnya saya sempet ribet untuk memberi tagging ini pada laravel karena fitur mail pada laravel hanya support untuk general purpose untuk beragam driver, jadi kalau mengikuti dokumentasi tagging pada mailgun dimana mailgun membutuhkan parameter “o:tag” yang tentu saja gak bisa di implementasiin di laravel.

    Setelah googling dan membaca dokumentasi swiftmailer (mail engine yang digunakan laravel) akhirnya saya berhasil menambahkan tagging pada email dengan menambahkan 2 baris kode baru pada kode pengirim email diatas tadi.

    Mail::send(
        'campaign/templates/newsletter',
        $data,
        function ( $message ) use ( $args ) {
            $message->from( "noreply@example.com" )
                    ->subject( 'newsletter' )
                    ->to( $args[ 'sendto' ] );
    
            // adding tagging to email
            $headers = $message->getHeaders();
            $headers->addTextHeader( 'X-Mailgun-Tag', 'campaign-' . $args[ 'ID' ] );
        }
    );

    berhasil! 💯

    Mendapatkan Statistik Email

    Untuk mendapatkan statistik email dari mailgun cara paling mudah adalah menggunakan PHP SDK dari mailgun sendiri.

    Lah, tadi katanya gak pake PHP SDK nya mailgun?

    Iya, untuk keperluan yang sudah disediakan oleh framework mah lebih baik menggunakan yang sudah ada, namun untuk keperluan lain yang gak disediain ya mending buat sendiri atau pake library lain yang sudah ada. Dalam hal ini mailgun cukup keren karena punya banyak SDK untuk beberapa macam bahasa pemprograman, termasuk PHP.

    Nah berikut adalah potongan kode untuk pengambilan statistik email berdasarkan tagging nya dari dokumentasi mailgun.

    $mail   = new Mailgun( env( 'MAILGUN_SECRET' ) );
    $domain = env( 'MAILGUN_DOMAIN' );
    $tags   = "campaign-17";
    $events = "opened";
    
    try {
        $data = $mail->get(
            $domain . "/tags/" . $tags . "/stats",
            array(
                'event' => $events
            )
        );
    
        return $data->http_response_body;
    } catch ( \Exception $e ) {
        return array();
    }

    Berdasarkan dokumentasi itu juga, terdapat beberapa event yang bisa di tracking.

    Dengan info selengkap ini, para user bisa mengetahui statistik dari setiap newsletter yang dikirim kepada konsumen nya yang tentunya akan berpengaruh pada strategi marketing berikutnya.

  • 1 Tahun bersama PHPStorm

    11 februari kemarin lisensi PHPStorm saya telah expired yang berarti sudah 1 tahun saya menggunakan PHPStorm untuk menemani saya bekerja. Saya masih ingat ketika itu masih menggunakan PHPStorm 8 sampai sekarang yang terbaru versi 10 dan sepertinya versi 11 akan keluar 1-2 bulan kedepan. Sebelumnya saya menggunakan sublime text dan sempet mencoba atom namun waktu…

    11 februari kemarin lisensi PHPStorm saya telah expired yang berarti sudah 1 tahun saya menggunakan PHPStorm untuk menemani saya bekerja. Saya masih ingat ketika itu masih menggunakan PHPStorm 8 sampai sekarang yang terbaru versi 10 dan sepertinya versi 11 akan keluar 1-2 bulan kedepan.

    Sebelumnya saya menggunakan sublime text dan sempet mencoba atom namun waktu itu atom masih buggy banget, saya memang agak pesimis dengan aplikasi yang berbasis HTML, CSS, dan JS lalu di package jadi aplikasi desktop. Sampai akhirnya atas pertimbangan produktifitas saya beralih ke IDE, netbeans dan aptana gak bisa dibilang baik dari sisi tampilan dan performa (agak jadi lambat, typikal aplikasi desktop berbasis java) dan pilihannya waktu itu PHPStorm. Saya putuskan mencoba trial selama 30 hari, yang kemudian tertarik untuk melanjutkan ke full version.

    (lebih…)

  • Masalah case-sensitive di Vagrant pada OSX

    Sebagai programmer, khususnya web programmer sering dong ya masalah dimana sebuah aplikasi yang kamu develop berjalan sempurna di laptop atau komputer mu, kemudian ketika handsoff ke klien atau kamu upload-in ke server mereka, tiba-tiba aplikasi kamu gak works sebagaimana mestinya, dan kamu bakal pakai alasan sejuta programmer, “ditempat saya jalan kok”.

    Sebagai programmer, khususnya web programmer sering dong ya masalah dimana sebuah aplikasi yang kamu develop berjalan sempurna di laptop atau komputer mu, kemudian ketika handsoff ke klien atau kamu upload-in ke server mereka, tiba-tiba aplikasi kamu gak works sebagaimana mestinya, dan kamu bakal pakai alasan sejuta programmer, “ditempat saya jalan kok”.

    (lebih…)