{"id":642,"date":"2015-09-19T08:34:13","date_gmt":"2015-09-19T08:34:13","guid":{"rendered":"http:\/\/zaf.web.id\/blog\/?p=642"},"modified":"2015-09-22T16:44:19","modified_gmt":"2015-09-22T16:44:19","slug":"membuat-booking-form-widget-di-wordpress","status":"publish","type":"post","link":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/","title":{"rendered":"Membuat Booking Form Widget di WordPress"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-652\" src=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png?resize=195%2C266\" alt=\"Fastboat Booking\" width=\"195\" height=\"266\" srcset=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png?w=640&amp;ssl=1 640w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png?resize=220%2C300&amp;ssl=1 220w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png?resize=619%2C845&amp;ssl=1 619w\" sizes=\"auto, (max-width: 195px) 100vw, 195px\" \/><\/a><\/p>\n<p>Kali ini saya akan coba membuat\u00a0<em>Booking Form Widget<\/em> untuk <em>Fastboat<\/em> di <em>WordPress,<\/em> secara konsep sebetulnya hampir sama untuk penggunaan pada\u00a0<em>booking platform<\/em> yang lain. Hanya saja untuk <em>Fastboat<\/em> kali ini menggunakan API dari <em>Fastboat System<\/em> yang sudah ada.<\/p>\n<p>Pertama-tama adalah\u00a0membuat <em>class<\/em> untuk <em>Widget<\/em> yang akan dibuat didalam file <code>functions.php<\/code> theme yang akan digunakan, format penulisan nama <em>class<\/em> sebaiknya menggunakan <em>Camel Case<\/em>. <em>Class<\/em> ini merupakan turunan (<em>Extend<\/em>) dari class <code>WP_Widget<\/code> yang sudah disediakan\u00a0<em>WordPress<\/em> untuk memudahkan kita dalam membuat\u00a0dan mengelola <em>Widget<\/em> di <em>WorPress<\/em>.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">class Fastboat_Booking_Form extends WP_Widget {\r\n\r\n   function __construct() {\r\n      parent::__construct(\r\n         'fastboat_booking_form',\r\n         'Fastboat Booking Form',\r\n         array(\r\n            'description' =&gt; 'Fastboat Booking form'\r\n         )\r\n      );\r\n   }\r\n}<\/pre>\n<p>Inisialisasi dilakukan pada\u00a0<a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_widget\/__construct\/\" target=\"_blank\">konstruktor<\/a>, dimana parameter pertama merupakan <em>ID<\/em> dari <em>widget<\/em> yang akan dibuat (harus <em>unique<\/em>), parameter kedua merupakan <em>title<\/em> dari <em>widget<\/em>, dan parameter ketiga merupakan\u00a0opsi pendukung lainnya dalam bentuk <code>array<\/code>.<!--more--><\/p>\n<figure id=\"attachment_655\" aria-describedby=\"caption-attachment-655\" style=\"width: 1562px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-2.35.36-PM1.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"wp-image-655 size-full\" src=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-2.35.36-PM1.png?resize=1562%2C1056\" alt=\"Instance dari Class Fastboat_Booking_Form hasil extend dari WP_Widget\" width=\"1562\" height=\"1056\" srcset=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-2.35.36-PM1.png?w=1562&amp;ssl=1 1562w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-2.35.36-PM1.png?resize=300%2C203&amp;ssl=1 300w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-2.35.36-PM1.png?resize=1024%2C692&amp;ssl=1 1024w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-2.35.36-PM1.png?resize=619%2C418&amp;ssl=1 619w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption id=\"caption-attachment-655\" class=\"wp-caption-text\">Instance dari Class Fastboat_Booking_Form hasil extend dari WP_Widget<\/figcaption><\/figure>\n<p>Pada tahapan ini widget sementara sudah tersimpan, selanjutnya menentukan isi dari <em>widget<\/em> tersebut. Untuk <em>Widget Booking Form<\/em> isinya yakni beberapa <em>field<\/em> isian untuk keperluan pemesanan, <em>styling<\/em> dapat dilakukan menggunakan HTML dan CSS (baik external file maupun <em>inline styling<\/em>).<\/p>\n<h2>Backend<\/h2>\n<p>Beberapa orang sering merasa tidak puas dengan <em>script<\/em> yang telah dibuatnya, misalnya dikemudian hari ingin mengganti <em>Title-nya,<\/em> warna latar belakang nya, dan lain sebagainya. Dalam kasus <em>Booking Form<\/em> mungkin yang cenderung sering diganti yakni URI untuk API nya, untuk itu kita perlu membuatnya dinamis agar dikemudian hari mudah untuk melakukan perubahan.<\/p>\n<p>Untuk\u00a0melakukan hal ini kita perlu membuat pengaturan <em>Widget<\/em> Data di <code>wp-admin<\/code> dengan menambahkan fungsi <code>form()<\/code> di dalam <em>class<\/em> <code>Fastboat_Booking_Form<\/code> tersebut.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">public function form( $instance ) {\r\n\r\n   $title = isset( $instance&#x5B; 'title' ] ) ? $instance&#x5B; 'title' ] : 'Fastboat Tickets';\r\n   $bank_data_url = isset( $instance&#x5B; 'bank_data_url' ] ) ? $instance&#x5B; 'bank_data_url' ] : 'https:\/\/bank-data.indotravelonline.com';\r\n   $fast_boat_book_url = isset( $instance&#x5B; 'fast_boat_book_url' ] ) ? $instance&#x5B; 'bank_data_url' ] : 'https:\/\/book.giliislandfastboats.com\/fastboat'; ?&gt;\r\n   &lt;p&gt;\r\n      &lt;label for=&quot;&lt;?php echo $this-&gt;get_field_id( 'title' ); ?&gt;&quot;&gt;Title&lt;\/label&gt;\r\n      &lt;input class=&quot;widefat&quot; id=&quot;&lt;?php echo $this-&gt;get_field_id( 'title' ); ?&gt;&quot; name=&quot;&lt;?php echo $this-&gt;get_field_name( 'title' ); ?&gt;&quot; type=&quot;text&quot; value=&quot;&lt;?php echo esc_attr( $title ); ?&gt;&quot; \/&gt;\r\n   &lt;\/p&gt;\r\n   &lt;p&gt;\r\n      &lt;label for=&quot;&lt;?php echo $this-&gt;get_field_id( 'bank_data_url' ); ?&gt;&quot;&gt;Bank Data URL&lt;\/label&gt;\r\n      &lt;input class=&quot;widefat&quot; id=&quot;&lt;?php echo $this-&gt;get_field_id( 'bank_data_url' ); ?&gt;&quot; name=&quot;&lt;?php echo $this-&gt;get_field_name( 'bank_data_url' ); ?&gt;&quot; type=&quot;text&quot; value=&quot;&lt;?php echo esc_attr( $bank_data_url ); ?&gt;&quot; \/&gt;\r\n   &lt;\/p&gt;\r\n   &lt;p&gt;\r\n      &lt;label for=&quot;&lt;?php echo $this-&gt;get_field_id( 'fast_boat_book_url' ); ?&gt;&quot;&gt;Fastboat Book URL&lt;\/label&gt;\r\n      &lt;input class=&quot;widefat&quot; id=&quot;&lt;?php echo $this-&gt;get_field_id( 'fast_boat_book_url' ); ?&gt;&quot; name=&quot;&lt;?php echo $this-&gt;get_field_name( 'fast_boat_book_url' ); ?&gt;&quot; type=&quot;text&quot; value=&quot;&lt;?php echo esc_attr( $fast_boat_book_url ); ?&gt;&quot; \/&gt;\r\n   &lt;\/p&gt;\r\n   &lt;?php\r\n}<\/pre>\n<p>Yang perlu diperhatikan adalah parameter <code>$instance<\/code> pada fungsi diatas, parameter tersebut mengacu pada data set yang ditujukan khusus untuk <em>widget<\/em> yang baru kita buat dan disimpan dengan ID sesuai ID yang telah kita tentukan pada saat <em>instance<\/em> sebelumnya (<code>fastboat_booking_form<\/code>).\u00a0Parameter ini akan sangat membantuk dalam mengelola data pada fungsi-fungsi selanjutnya, selama masih berada dalam lingkup <code>wp-admin<\/code>\u00a0<em>WordPress<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p><em>Script<\/em> diatas hanya membuat <em>form<\/em> isian untuk menyimpan variabel <code>bank_data_url<\/code> dan <code>fast_boat_book_url<\/code>. Kedua data tersebut merupakan API yang kebetulan saya gunakan untuk membuat <em>Fastboat Booking Form<\/em> di beberapa\u00a0<em>website<\/em>.<\/p>\n<figure id=\"attachment_667\" aria-describedby=\"caption-attachment-667\" style=\"width: 2560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-667\" src=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png?resize=2560%2C1068\" alt=\"Widget data Fastboat Booking Form\" width=\"2560\" height=\"1068\" srcset=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png?w=2560&amp;ssl=1 2560w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png?resize=300%2C125&amp;ssl=1 300w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png?resize=1024%2C427&amp;ssl=1 1024w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png?resize=619%2C258&amp;ssl=1 619w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-19-at-3.42.40-PM.png?w=2000&amp;ssl=1 2000w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption id=\"caption-attachment-667\" class=\"wp-caption-text\">Widget data Fastboat Booking Form<\/figcaption><\/figure>\n<p><em>Form<\/em> itu masih sebatas <em>form<\/em> biasa, bisa diisi dengan suatu <em>variable<\/em> namun tidak dapat\u00a0menyimpannya. Untuk itu kita perlu membuat fungsi <code>update()<\/code> didalam <em>class<\/em> <code>Fastboat_Booking_Form<\/code> untuk meng-<em>handle<\/em> kebutuhan penyimpanan data <em>widget<\/em> tersebut kedalam sistem <em>WordPress<\/em>.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">public function update( $new_instance, $old_instance ) {\r\n   return array(\r\n      'title' =&gt; !empty( $new_instance&#x5B; 'title' ] ) ? strip_tags( $new_instance&#x5B; 'title' ] ) : 'Fastboat Tickets',\r\n      'bank_data_url' =&gt; !empty( $new_instance&#x5B; 'bank_data_url' ] ) ? strip_tags( $new_instance&#x5B; 'bank_data_url' ] ) : 'https:\/\/bank-data.indotravelonline.com',\r\n      'fast_boat_book_url' =&gt; !empty( $new_instance&#x5B; 'fast_boat_book_url' ] ) ? strip_tags( $new_instance&#x5B; 'fast_boat_book_url' ] ) : 'https:\/\/book.giliislandfastboats.com\/fastboat'\r\n   );\r\n}<\/pre>\n<p>Hampir sama dengan parameter <code>$instance<\/code> sebelumnya, fungsi <code>update()<\/code> memiliki 2 parameter yang memang diperlukan untuk proses update data, yakni <code>$new_instance<\/code> dan <code>$old_instance<\/code>. Parameter <code>$new_instance<\/code> berisi data baru yang ter-<em>submit<\/em> oleh <em>form<\/em> tersebut sedangkan <code>$old_instance<\/code> masih menyimpan data sebelumnya sebelum dilakukan perubahan. Penggunaan parameter <code>$old_instance<\/code> biasanya pada verifikasi apakah data tersebut telah dilakukan perubahan atau tidak dengan mencocokan data pada <code>$new_instance<\/code> dan <code>$old_instance<\/code>.<\/p>\n<h2>Frontend<\/h2>\n<p>Terakhir adalah\u00a0kita perlu membuat tampilan yang muncul ketika <em>widget<\/em> yang kita buat tersebut diaktifkan. Tambahkan fungsi <code>widget()<\/code>\u00a0didalam <em>class<\/em> <code>Fastboat_Booking_Form<\/code>.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">public function widget( $args, $instance ) {\r\n\r\n   wp_enqueue_script('jquery');\r\n   wp_enqueue_script('jquery-ui-core');\r\n   wp_enqueue_script('jquery-ui-datepicker');\r\n\r\n   wp_enqueue_style('jquery-ui', get_stylesheet_directory_uri() . '\/stylesheet\/jquery-ui.min.css','style');\r\n   wp_enqueue_style('jquery-ui-theme', get_stylesheet_directory_uri() . '\/stylesheet\/jquery-ui.theme.css','style');\r\n\r\n   $title = $instance&#x5B; 'title' ];\r\n   $bank_data_url = $instance&#x5B; 'bank_data_url' ];\r\n   $fast_boat_api_url = $bank_data_url . '\/api\/xxx'; \/\/ censored, sorry!\r\n   $currency_api_url = $bank_data_url . '\/api\/xxx'; \/\/ censored, sorry!\r\n\r\n   $fast_boat_book_url = $instance&#x5B; 'fast_boat_book_url' ];\r\n\r\n   $max_number_of_adults = 25;\r\n   $max_number_of_childs = 10;\r\n   $max_number_of_infants = 5;\r\n\r\n   \/** ambil daftar regions *\/\r\n   $region_lists = json_decode( file_get_contents( $fast_boat_api_url . '\/regions' ) );\r\n   $default_depart_region_id = 3;\r\n   $default_arrival_region_id = 1;\r\n\r\n   \/** ambil daftar currency *\/\r\n   $currency_lists = json_decode( file_get_contents( $currency_api_url . '\/rates' ) ); ?&gt;\r\n\r\n   &lt;div class=&quot;row&quot;&gt;\r\n      &lt;div id=&quot;fastboat&quot; class=&quot;twelve columns&quot;&gt;\r\n         &lt;div class=&quot;row&quot;&gt;\r\n            &lt;h3 class=&quot;fb-title&quot;&gt;&lt;?php echo $title; ?&gt;&lt;\/h3&gt;\r\n         &lt;\/div&gt;\r\n         &lt;div class=&quot;fb-container&quot;&gt;\r\n            &lt;form action=&quot;&lt;?php echo $fast_boat_book_url; ?&gt;\/select-boat\/record-session&quot; method=&quot;post&quot;&gt;\r\n               &lt;div class=&quot;left-side&quot;&gt;\r\n                  &lt;div class=&quot;fb-routes&quot;&gt;\r\n                     &lt;div class=&quot;row&quot;&gt;\r\n                        &lt;div class=&quot;six columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-departure&quot;&gt;\r\n                              &lt;p&gt;&lt;label for=&quot;departure_region_id&quot;&gt;From&lt;\/label&gt;&lt;\/p&gt;\r\n                              &lt;select id=&quot;departure_region_id&quot; name=&quot;departure_region_id&quot;&gt;\r\n                                 &lt;?php foreach ($region_lists as $region) : ?&gt;\r\n                                    &lt;option value=&quot;&lt;?php echo $region-&gt;region_id; ?&gt;&quot;\r\n                                          &lt;?php if ($region-&gt;region_id == $default_depart_region_id) : ?&gt;selected&lt;?php endif; ?&gt; &gt;&lt;?php echo $region-&gt;region_name; ?&gt;&lt;\/option&gt;\r\n                                 &lt;?php endforeach; ?&gt;\r\n                              &lt;\/select&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                        &lt;div class=&quot;six columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-arrival&quot;&gt;\r\n                              &lt;p&gt;&lt;label for=&quot;arrival_region_id&quot;&gt;To&lt;\/label&gt;&lt;\/p&gt;\r\n                              &lt;select id=&quot;arrival_region_id&quot; name=&quot;arrival_region_id&quot;&gt;\r\n                                 &lt;?php foreach ($region_lists as $region) : ?&gt;\r\n                                    &lt;option value=&quot;&lt;?php echo $region-&gt;region_id; ?&gt;&quot;\r\n                                          &lt;?php if ($region-&gt;region_id == $default_arrival_region_id) : ?&gt;selected&lt;?php endif; ?&gt; &gt;&lt;?php echo $region-&gt;region_name; ?&gt;&lt;\/option&gt;\r\n                                 &lt;?php endforeach; ?&gt;\r\n                              &lt;\/select&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                     &lt;\/div&gt;\r\n                  &lt;\/div&gt;\r\n                  &lt;div class=&quot;fb-dates&quot;&gt;\r\n                     &lt;div class=&quot;row&quot;&gt;\r\n                        &lt;div class=&quot;six columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-depart-date&quot;&gt;\r\n                              &lt;p&gt;&lt;label for=&quot;departure_date&quot;&gt;Departure&lt;\/label&gt;&lt;\/p&gt;\r\n                              &lt;input type=&quot;text&quot; id=&quot;departure_date&quot; name=&quot;departure_transfer_date&quot;\r\n                                    value=&quot;&lt;?php echo date('Y-m-d', mktime(0, 0, 0, date(&quot;m&quot;), date(&quot;d&quot;) + 1, date(&quot;Y&quot;))); ?&gt;&quot;\/&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                        &lt;div class=&quot;six columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-arrival-date&quot;&gt;\r\n                              &lt;p&gt;\r\n                                 &lt;label for=&quot;return_date&quot;&gt;Return? &amp;nbsp;&amp;nbsp;&lt;\/label&gt;\r\n                                 &lt;input type=&quot;checkbox&quot; id=&quot;route_type&quot; checked \/&gt;\r\n                                 &lt;input type=&quot;hidden&quot; name=&quot;route_type&quot; id=&quot;route_type_value&quot; value=&quot;return&quot; \/&gt;\r\n                              &lt;\/p&gt;\r\n\r\n                              &lt;div id=&quot;return_date_container&quot;&gt;\r\n                                 &lt;input type=&quot;text&quot; id=&quot;return_date&quot; name=&quot;return_transfer_date&quot;\r\n                                       value=&quot;&lt;?php echo date('Y-m-d', mktime(0, 0, 0, date(&quot;m&quot;), date(&quot;d&quot;) + 2, date(&quot;Y&quot;))); ?&gt;&quot;\/&gt;\r\n                              &lt;\/div&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                     &lt;\/div&gt;\r\n                  &lt;\/div&gt;\r\n               &lt;\/div&gt;\r\n               &lt;div class=&quot;right-side&quot;&gt;\r\n                  &lt;div class=&quot;fb-passengers&quot;&gt;\r\n                     &lt;div class=&quot;row&quot;&gt;\r\n                        &lt;div class=&quot;four columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-adult&quot;&gt;\r\n                              &lt;label for=&quot;number_of_adult&quot;&gt;Adult\r\n                                 &lt;small&gt;(&gt;10 yrs)&lt;\/small&gt;\r\n                              &lt;\/label&gt;\r\n                              &lt;select id=&quot;number_of_adult&quot; name=&quot;number_of_adult&quot;&gt;\r\n                                 &lt;?php foreach (range(1, $max_number_of_adults) as $i) : ?&gt;\r\n                                    &lt;option value=&quot;&lt;?php echo $i; ?&gt;&quot;&gt;&lt;?php echo $i; ?&gt;&lt;\/option&gt;\r\n                                 &lt;?php endforeach; ?&gt;\r\n                              &lt;\/select&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                        &lt;div class=&quot;four columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-child&quot;&gt;\r\n                              &lt;label for=&quot;number_of_child&quot;&gt;Child\r\n                                 &lt;small&gt;(2-10 yrs)&lt;\/small&gt;\r\n                              &lt;\/label&gt;\r\n                              &lt;select id=&quot;number_of_child&quot; name=&quot;number_of_child&quot;&gt;\r\n                                 &lt;?php foreach (range(0, $max_number_of_childs) as $i) : ?&gt;\r\n                                    &lt;option value=&quot;&lt;?php echo $i; ?&gt;&quot;&gt;&lt;?php echo $i; ?&gt;&lt;\/option&gt;\r\n                                 &lt;?php endforeach; ?&gt;\r\n                              &lt;\/select&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                        &lt;div class=&quot;four columns&quot;&gt;\r\n                           &lt;div class=&quot;fb-infant&quot;&gt;\r\n                              &lt;label for=&quot;number_of_infant&quot;&gt;Infant\r\n                                 &lt;small&gt;(&lt;2 yrs)&lt;\/small&gt;\r\n                              &lt;\/label&gt;\r\n                              &lt;select id=&quot;number_of_infant&quot; name=&quot;number_of_infant&quot;&gt;\r\n                                 &lt;?php foreach (range(0, $max_number_of_infants) as $i) : ?&gt;\r\n                                    &lt;option value=&quot;&lt;?php echo $i; ?&gt;&quot;&gt;&lt;?php echo $i; ?&gt;&lt;\/option&gt;\r\n                                 &lt;?php endforeach; ?&gt;\r\n                              &lt;\/select&gt;\r\n                           &lt;\/div&gt;\r\n                        &lt;\/div&gt;\r\n                     &lt;\/div&gt;\r\n                  &lt;\/div&gt;\r\n                  &lt;div class=&quot;fb-currency-button&quot;&gt;\r\n                     &lt;div class=&quot;fb-currencies&quot;&gt;\r\n                        &lt;p&gt;&lt;label for=&quot;currency_id&quot;&gt;Preferred Currency&lt;\/label&gt;&lt;\/p&gt;\r\n                        &lt;select id=&quot;currency_id&quot; name=&quot;currency_id&quot;&gt;\r\n                           &lt;?php foreach ($currency_lists as $currency) : ?&gt;\r\n                              &lt;option\r\n                                 value=&quot;&lt;?php echo $currency-&gt;currency_id; ?&gt;&quot;&gt;&lt;?php echo $currency-&gt;currency_name; ?&gt;\r\n                                 (&lt;?php echo $currency-&gt;currency_code; ?&gt;)\r\n                              &lt;\/option&gt;\r\n                           &lt;?php endforeach; ?&gt;\r\n                        &lt;\/select&gt;\r\n                     &lt;\/div&gt;\r\n                     &lt;div class=&quot;fb-buttons&quot;&gt;\r\n                        &lt;button class=&quot;button tiny radius&quot;&gt;Book Now&lt;\/button&gt;\r\n               &lt;span class=&quot;fb-lost-eticket&quot;&gt;\r\n                  &amp;nbsp;&amp;mdash;&amp;nbsp;\r\n                  &lt;a href=&quot;&lt;?php echo $fast_boat_book_url; ?&gt;\/e-ticket&quot;&gt;&lt;strong&gt;Lost your e-Ticket?&lt;\/strong&gt;&lt;\/a&gt;\r\n               &lt;\/span&gt;\r\n                     &lt;\/div&gt;\r\n                  &lt;\/div&gt;\r\n               &lt;\/div&gt;\r\n            &lt;\/form&gt;\r\n            &lt;div class=&quot;clear&quot;&gt;&lt;\/div&gt;\r\n         &lt;\/div&gt;\r\n\r\n         &lt;script type=&quot;text\/javascript&quot;&gt;\r\n            \/*----------------------------------------------------\r\n             \/* Datepicker untuk booking form\r\n             \/*--------------------------------------------------*\/\r\n            jQuery(document).ready(function($){\r\n               $(function() {\r\n                  $( &quot;.fb-depart-date #departure_date&quot; ).datepicker({\r\n                     dateFormat: &quot;yy-mm-dd&quot;,\r\n                     minDate: 0,\r\n                     onClose: function( selectedDate ) {\r\n                        var x = selectedDate === '' ? 0 : selectedDate;\r\n                        $( &quot;.fb-arrival-date #return_date&quot; ).datepicker( &quot;option&quot;, &quot;minDate&quot;, x );\r\n                     }\r\n                  });\r\n                  $( &quot;.fb-arrival-date #return_date&quot; ).datepicker({\r\n                     dateFormat: &quot;yy-mm-dd&quot;,\r\n                     minDate: 0,\r\n                     onClose: function( selectedDate ) {\r\n                        $( &quot;.fb-depart-date #departure_date&quot; ).datepicker( &quot;option&quot;, &quot;maxDate&quot;, selectedDate );\r\n                     }\r\n                  });\r\n               });\r\n\r\n               $('.fb-arrival-date #route_type').change(function(){\r\n                  if( $(this).is(':checked') ) {\r\n                     $('.fb-arrival-date #return_date_container input').attr('disabled',false);\r\n                     $( &quot;#departure_date&quot; ).datepicker( &quot;option&quot;, &quot;maxDate&quot;, $( &quot;#return_date&quot;).val() );\r\n                     $('#route_type_value').val('return');\r\n                  } else {\r\n                     $('.fb-arrival-date #return_date_container input').attr('disabled',true);\r\n                     $( &quot;#departure_date&quot; ).datepicker( &quot;option&quot;, &quot;maxDate&quot;, null );\r\n                     $('#route_type_value').val('oneway');\r\n                  }\r\n               });\r\n\r\n            });\r\n         &lt;\/script&gt;\r\n      &lt;\/div&gt;\r\n   &lt;\/div&gt;\r\n\r\n   &lt;?php\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Sama halnya seperti membuat halaman HTML biasa, dapat juga dikombinasikan dengan CSS dan JavaScript.\u00a0Semua <em>script<\/em> dan <em>screenshot<\/em> pada tulisan ini saya kutip langsung dari <em>resource<\/em> <a href=\"http:\/\/giliislandfastboats.com\">giliislandfastboats.com<\/a>.<\/p>\n<p><strong>Note:<\/strong> Untuk Fastboat System API tidak disediakan untuk publik, informasi lebih lanjut dapat menghubungi <a href=\"http:\/\/lrsoft.co.id\" target=\"_blank\">LRsoft<\/a> via <a href=\"mailto:info@lrsoft.org\">email<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kali ini saya akan coba membuat\u00a0Booking Form Widget untuk Fastboat di WordPress, secara konsep sebetulnya&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[57,7],"tags":[143,144],"class_list":["post-642","post","type-post","status-publish","format-standard","hentry","category-programming","category-wordpress","tag-booking-form-widget","tag-fastboat-booking-form"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Membuat Booking Form Widget di WordPress - Ahmad Zafrullah<\/title>\n<meta name=\"description\" content=\"Bagaimana membuat Fastboat Booking Widget pada WordPress untuk digunakan pada Theme menggunakan Fastboat System API.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Membuat Booking Form Widget di WordPress - Ahmad Zafrullah\" \/>\n<meta property=\"og:description\" content=\"Bagaimana membuat Fastboat Booking Widget pada WordPress untuk digunakan pada Theme menggunakan Fastboat System API.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Ahmad Zafrullah\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/23Pstars\" \/>\n<meta property=\"article:author\" content=\"http:\/\/www.facebook.com\/23Pstars\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-19T08:34:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-09-22T16:44:19+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png\" \/>\n<meta name=\"author\" content=\"Zaf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@23Pstars\" \/>\n<meta name=\"twitter:site\" content=\"@23Pstars\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zaf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/\"},\"author\":{\"name\":\"Zaf\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\"},\"headline\":\"Membuat Booking Form Widget di WordPress\",\"datePublished\":\"2015-09-19T08:34:13+00:00\",\"dateModified\":\"2015-09-22T16:44:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/\"},\"wordCount\":2217,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\"},\"image\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png\",\"keywords\":[\"booking form widget\",\"fastboat booking form\"],\"articleSection\":[\"Programming\",\"WordPress\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/\",\"url\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/\",\"name\":\"Membuat Booking Form Widget di WordPress - Ahmad Zafrullah\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png\",\"datePublished\":\"2015-09-19T08:34:13+00:00\",\"dateModified\":\"2015-09-22T16:44:19+00:00\",\"description\":\"Bagaimana membuat Fastboat Booking Widget pada WordPress untuk digunakan pada Theme menggunakan Fastboat System API.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#primaryimage\",\"url\":\"http:\\\/\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png\",\"contentUrl\":\"http:\\\/\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2015\\\/09\\\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/membuat-booking-form-widget-di-wordpress\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Membuat Booking Form Widget di WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/\",\"name\":\"Ahmad Zafrullah\",\"description\":\"Work to Learn is better than Learn how to Work\",\"publisher\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\",\"name\":\"Zaf\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\",\"width\":300,\"height\":300,\"caption\":\"Zaf\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\"},\"sameAs\":[\"http:\\\/\\\/zaf.web.id\",\"http:\\\/\\\/www.facebook.com\\\/23Pstars\",\"https:\\\/\\\/x.com\\\/23Pstars\"],\"url\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/author\\\/zaf\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Membuat Booking Form Widget di WordPress - Ahmad Zafrullah","description":"Bagaimana membuat Fastboat Booking Widget pada WordPress untuk digunakan pada Theme menggunakan Fastboat System API.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/","og_locale":"id_ID","og_type":"article","og_title":"Membuat Booking Form Widget di WordPress - Ahmad Zafrullah","og_description":"Bagaimana membuat Fastboat Booking Widget pada WordPress untuk digunakan pada Theme menggunakan Fastboat System API.","og_url":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/","og_site_name":"Ahmad Zafrullah","article_publisher":"http:\/\/www.facebook.com\/23Pstars","article_author":"http:\/\/www.facebook.com\/23Pstars","article_published_time":"2015-09-19T08:34:13+00:00","article_modified_time":"2015-09-22T16:44:19+00:00","og_image":[{"url":"http:\/\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png","type":"","width":"","height":""}],"author":"Zaf","twitter_card":"summary_large_image","twitter_creator":"@23Pstars","twitter_site":"@23Pstars","twitter_misc":{"Ditulis oleh":"Zaf","Estimasi waktu membaca":"11 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#article","isPartOf":{"@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/"},"author":{"name":"Zaf","@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed"},"headline":"Membuat Booking Form Widget di WordPress","datePublished":"2015-09-19T08:34:13+00:00","dateModified":"2015-09-22T16:44:19+00:00","mainEntityOfPage":{"@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/"},"wordCount":2217,"commentCount":0,"publisher":{"@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed"},"image":{"@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#primaryimage"},"thumbnailUrl":"http:\/\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png","keywords":["booking form widget","fastboat booking form"],"articleSection":["Programming","WordPress"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/","url":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/","name":"Membuat Booking Form Widget di WordPress - Ahmad Zafrullah","isPartOf":{"@id":"https:\/\/zaf.web.id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#primaryimage"},"thumbnailUrl":"http:\/\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png","datePublished":"2015-09-19T08:34:13+00:00","dateModified":"2015-09-22T16:44:19+00:00","description":"Bagaimana membuat Fastboat Booking Widget pada WordPress untuk digunakan pada Theme menggunakan Fastboat System API.","breadcrumb":{"@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#primaryimage","url":"http:\/\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png","contentUrl":"http:\/\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/Screen-Shot-2015-09-17-at-3.19.46-PM1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/zaf.web.id\/blog\/membuat-booking-form-widget-di-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zaf.web.id\/blog\/"},{"@type":"ListItem","position":2,"name":"Membuat Booking Form Widget di WordPress"}]},{"@type":"WebSite","@id":"https:\/\/zaf.web.id\/blog\/#website","url":"https:\/\/zaf.web.id\/blog\/","name":"Ahmad Zafrullah","description":"Work to Learn is better than Learn how to Work","publisher":{"@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zaf.web.id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":["Person","Organization"],"@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed","name":"Zaf","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1","url":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1","contentUrl":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1","width":300,"height":300,"caption":"Zaf"},"logo":{"@id":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1"},"sameAs":["http:\/\/zaf.web.id","http:\/\/www.facebook.com\/23Pstars","https:\/\/x.com\/23Pstars"],"url":"https:\/\/zaf.web.id\/blog\/author\/zaf\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":374,"url":"https:\/\/zaf.web.id\/blog\/happy-birthday-1st-lrsoft\/","url_meta":{"origin":642,"position":0},"title":"Happy Birthday 1st LRsoft","author":"Zaf","date":"September 11, 2014","format":false,"excerpt":"Sebenarnya saya sangat buruk dalam berkata-kata, memberi sambutan, mengucapkan selamat, berpidato, dan lain-lain semuanya hal yang saya coba hindari. Tapi kali ini saya akan mencoba merangkai beberapa batang kalimat untuk mengucapkan Selamat dan Terima Kasih kepada LRsoft. Loh itu kan perusahaan sendiri? Kok bilang terima kasih? Oh iya hari ini\u2026","rel":"","context":"dalam &quot;Coretan&quot;","block_context":{"text":"Coretan","link":"https:\/\/zaf.web.id\/blog\/category\/coretan\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.lrsoft.org\/images\/lrsoft.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":127,"url":"https:\/\/zaf.web.id\/blog\/menelusuri-template-dan-plugin-yang-digunakan-pada-mesin-wordpress\/","url_meta":{"origin":642,"position":1},"title":"Menelusuri Template dan Plugin yang Digunakan pada Mesin WordPress","author":"Zaf","date":"Desember 28, 2020","format":false,"excerpt":"Hampir sebagian besar website yang online di internet saat ini adalah menggunakan mesin WordPress (WP), termasuk blog saya ini. Ketika kita mengetahui bahwa engine yang digunakan dalam suatu web adalah WP dan menurut kita tampilan atau fitur-fiturnya cukup menarik, tidak jarang kita menjadi penasaran. Template atau plugin apa saja yang\u2026","rel":"","context":"dalam &quot;WordPress&quot;","block_context":{"text":"WordPress","link":"https:\/\/zaf.web.id\/blog\/category\/wordpress\/"},"img":{"alt_text":"View source fkip.unram.ac.id","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2021-09-20-14-41-11.png?fit=1028%2C509&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2021-09-20-14-41-11.png?fit=1028%2C509&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2021-09-20-14-41-11.png?fit=1028%2C509&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/12\/Screenshot-from-2021-09-20-14-41-11.png?fit=1028%2C509&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1885,"url":"https:\/\/zaf.web.id\/blog\/code-inception-kemudahan-upgrade-versi-php-di-phpstorm\/","url_meta":{"origin":642,"position":2},"title":"Code Inception: Kemudahan Upgrade Versi PHP di PhpStorm","author":"Zaf","date":"September 26, 2022","format":false,"excerpt":"Upgrade selalu menjadi mimpi buruk bagi seorang developer, tidak lepas juga bagi seorang web engineer. Performance dan security menjadi dua aspek yang sangat dipertimbangkan. Perubahan antar versi di PHP secara teknis dapat diketahui, apa saja fitur-fitur baru dan apa saja fitur-fitur yang sudah deprecated. Namun jika harus memeriksa satu persatu\u2026","rel":"","context":"dalam &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/zaf.web.id\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-26-at-18.54.35.png?fit=1200%2C725&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-26-at-18.54.35.png?fit=1200%2C725&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-26-at-18.54.35.png?fit=1200%2C725&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-26-at-18.54.35.png?fit=1200%2C725&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2022\/11\/Screenshot-2022-11-26-at-18.54.35.png?fit=1200%2C725&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":117,"url":"https:\/\/zaf.web.id\/blog\/jebakan-halaman-admin-php\/","url_meta":{"origin":642,"position":3},"title":"Jebakan halaman admin PHP","author":"Zaf","date":"April 14, 2011","format":false,"excerpt":"Mungkin kalo diperhatikan judul diatas memang agak membingungkan, tapi yang saya maksudkan disini adalah membuat sebuah konsep halaman admin untuk menjebak seorang hacker mencoba untuk menyerang site kita melalui halaman admin. Terinspirasi dari teman di sebuah forum yang memasang backdoor disebuah situs dan memproteksi backdoor tersebut menggunakan cara ini ^_^\u2026","rel":"","context":"dalam &quot;Inspirasi&quot;","block_context":{"text":"Inspirasi","link":"https:\/\/zaf.web.id\/blog\/category\/inspirasi\/"},"img":{"alt_text":"Screenshot from 2014-11-24 14:31:42","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2011\/04\/Screenshot-from-2014-11-24-143142.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1825,"url":"https:\/\/zaf.web.id\/blog\/domain-local-apache-di-windows-environment\/","url_meta":{"origin":642,"position":4},"title":"Domain Local Apache di Windows Environment","author":"Zaf","date":"Juli 7, 2021","format":false,"excerpt":"Sebelumnya saya pernah menulis tentang bagaimana membuat custom local domain untuk apache pada macOS, kali ini saya akan share konfigurasi yang sama namun pada OS berbasis Windows. Secara umum alurnya tidak jauh berbeda, bahkan software-software yang digunakan pun masih tetap sama. Kembali mengingatkan bahwa dalam konfigurasi ini kita ingin membuat\u2026","rel":"","context":"dalam &quot;Coretan&quot;","block_context":{"text":"Coretan","link":"https:\/\/zaf.web.id\/blog\/category\/coretan\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/10\/Screenshot-2021-10-06-191701.png?fit=491%2C221&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":84,"url":"https:\/\/zaf.web.id\/blog\/oop-dan-terstruktur\/","url_meta":{"origin":642,"position":5},"title":"OOP dan Terstruktur","author":"Zaf","date":"April 13, 2011","format":false,"excerpt":"Berhubung lagi praktikum pemrograman berorientasi objek, yah sekalian aja post tentang OOP dan terstruktur. :yell: Apa sih bedanya pemrograman yang berorientasi objek dengan pemrograman struktur? Sesuai dengan namanya, pemrograman berorientasi objek (OOP) merupakan pemrograman yang berorientasi kepada objek-objek. Semua data dan fungsi (method) dibungkus menjadi satu kedalam class dan objek.\u2026","rel":"","context":"dalam &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/zaf.web.id\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4zLnS-am","_links":{"self":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts\/642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/comments?post=642"}],"version-history":[{"count":20,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts\/642\/revisions"}],"predecessor-version":[{"id":669,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts\/642\/revisions\/669"}],"wp:attachment":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/media?parent=642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/categories?post=642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/tags?post=642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}