WordPress Muncul Error 504 Gateway Time-Out

Mungkin buat kamu yang fokus di konten jarang memperhatikan hal ini, tapi jika kamu adalah seorang yang mengerti dan paham masalah theme, plugin dan sedikit mengerti server/hosting maka bisa saja menemukan hal ini.

Pastinya untuk Developer WordPress akan sering menemui ini ketika membuat fungsi atau kodingan yang terasa berat di hosting atau bahkan server.

Error 504 Gateway Time-out adalah waktu proses yang terlalu lama. Waktu proses ini tergantung pengaturan max execute time di PHP.
Berikut pesan error yang banyak ditemui :

  • “504 Gateway Timeout”
  • “504 Gateway Time-Out”
  • “504 Gateway Timeout NGINX”
  • “Nginx 504 Gateway Timeout”
  • “HTTP 504 Gateway Timeout”
  • “HTTP 504 Error”
  • “HTTP 504”
  • “Gateway Timeout (504)”

Biasanya waktu proses lebih dari 30 detik (default value).

Error diatas akan adalah contoh ketika proses ajax terlalu lama maka akan muncul di console log browser : POST https://example.net/wp-admin/admin-ajax.php 504 ()

 
Dan gambar diatas contoh 504 Gateway Time-out nginx di browser ketika menggunakan proses php biasa.

Mengatasi masalah 504 Gateway Time-out

Cara Pertama : Mengganti konfigrurasi max_execution_time, request_terminate_timeout, fastcgi_read_timeout

nano /etc/php5/fpm/php.ini
max_execution_time = 300
nano /etc/php5/fpm/pool.d/www.conf
request_terminate_timeout = 300
nano /etc/nginx/nginx.conf
http {
#...
fastcgi_read_timeout 300;
#...
}
And in your config:
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_read_timeout 300;
}
And reload services
service php5-fpm reload
service nginx reload

Cara Kedua : Jika kamu Developer, Perbaikin code untuk memperingan proses php (Agar proses tidak melebihi 30 detik).

Terima kasih sudah membaca jika ada yang mau ditanyakan silahkan komentar atau butuh bantuan atau kerjaan tentang Programming bisa kontak saya di halaman kontak.
 

Gagal Kirim Email via SMTP jika 2-Step Verification Aktif !

Untuk aktifitas kirim-kirim email di blog selalu mengunakan SMTP ketimbang PHP mail bawaan WordPress. Sangat dikagetkan karena seluruh email seketika gagal dikirim setelah mengaktigkan fitur 2-step verification. Salah satu penyedia mail yang kentos gunakan ya gmail. Ya, cara ini bisa digunakan untuk kalian yang menggunakan SMTP di Gmail.
Cara mengirim email via SMTP dengan 2-step verification adalah dengan membuat custom app di akun Gmail kalian.

  1. Masuk Gmail dengan akun kalian
  2. Arahkan menuju https://security.google.com/settings/security/apppasswords
  3. pada ‘select app’ pilih ‘custom’, kasih nama app kalian kemudian tekan /generate’.
  4. Setelah itu akan muncul token 16 karakter yang bisa digunakan sebagai password.

Demikian cara mengatasi gagal authentication / kirim email menggunakan SMTP jika 2-step verification diaktifkan.

RunCloud alternatif ServerPilot Murah Meriah !! Tapi …

Jika sobat kentos terbiasa menggunakan VPS / Server dan tidak mau repot menggunakan terminal untuk mengelola website. Tentu tidak asing dengan salah satu Control Panel satu ini, yaitu ServerPilot. Server Pilot memang control panel favorit para pengguna WordPress tentunya. Karena mudah dan stabil tidak sedikit yang menggunakannya dan tentu ada sedikit yang kurang kentos sukai disini.
Apa itu? yaitu biaya. ServerPilot mebebankan $10/bulan/server. Nah kalo punya banyak server tekor juga…
Tetapi tanpa disengaja kentos menemukan Control Panel alternatif yang bisa dibilang masih baru. RunCloud adalah control panel yang mengunggulkan fitur hybrid nginx+apache yang cepat untuk load sebuah website. Untuk biaya yang dibebankan memang sama yaitu $10/bulan tetapi tidak untuk satu server saja melainkan $10/bulan untuk semua server yang sobat kentos punya.. haha.. mantap betul bukan.. ??
Penasaran dengan RunCloud? Klik runcloud.io
Oke.. Kentos tidak akan mereview banyak tentang RunCloud disini. Melainkan hanya ingin memberitahu masalah yang dialami ketika menggunakan fitur hybrid nginx+apache.
Jadi fitur hybrid nginx+apache ini akan membagi tugas, file statis seperti html, css, js, image, xml akan diproses oleh nginx sedangkan file dinamis akan diproses oleh Apache2 + PHP-FPM.
Kendala muncul ketika kentos akan menggunakan plugin favorit yaitu byrev wp picshield tidak bekerja sebagaimana mestinya.
Karena sudah diketahui tugas-tugas mereka kentos langsung menuduh nginx sebagai pelakunya karena .htaccess tidak terbaca oleh apache2.
Kentos mencari cari dimana letak config nginx dan ketemu di

/etc/nginx-rc/conf.d/namadomain.d

kemudian edit file main.conf dengan perintah

nano main.conf

Cari location yang menyebut sebuah ekstensi gambar seperti gif, png, jpg dan jpeg.
Sebelumnya terlihat seperti ini :

location ~ .(ico|css|gif|jpe?g|png|gz|zip|flv|rar|wmv|avi|css|js|swf|png|htc|mpeg|mpg|txt|otf|ttf|eot|woff|svg|html)$ {

dan kentos ubah menjadi seperti ini :

location ~ .(ico|css|gz|zip|flv|rar|wmv|avi|css|js|swf|png|htc|mpeg|mpg|txt|otf$

Sudah tinggal reload aja config nginx dengan perintah dibawah :

systemctl reload nginx-rc

Silahkan coba lagi. 🙂

Update Woocommerce 3 Banyak Error !!

Woocommerce saat ini masih menjadi plugin favorit untuk membuat toko online menggunakan CMS WordPress. Beberapa saat jika ada bug selalu dilakukan update oleh para developer. Seperti mayor update yang di lakukan Woocommerce akhir ini yaitu dari Woocommerce versi 2 ke versi 3 tentu banyak perubahan di segi code.
Perubahan di segi kode tentu akan sangat berpengaruh untuk developer WordPress theme yang support dengan Woocommerce. Banyak sekali fungsi – fungsi yang berubah.
Salah satu yang akan kentos bahas adalah muncul spam error yang bikin puyeng. hehe..

Notice: product_type was called incorrectly. Product properties should not be accessed directly. Backtrace: require(‘wp-blog-header.php’), require_once(‘wp-includes/template-loader.php’), include(‘/themes/utama/woocommerce/single-product.php’), get_header, locate_template, load_template, require_once(‘/themes/utama/header.php’), wp_head, do_action(‘wp_head’), WP_Hook->do_action, WP_Hook->apply_filters, call_user_func_array, Webdados_FB_Public->insert_meta_tags, WC_Product->__construct, WC_Product->get_type, WC_Abstract_Legacy_Product->__get, wc_doing_it_wrong Please see Debugging in WordPress for more information. (This message was added in version 3.0.) in /wp-includes/functions.php on line 4138
Notice: Undefined property: WC_Product::$product_type in /wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-product.php on line 139

Singkat error seperti log error diatas.
Langsung saja kentos kasih tau solusi mengilangkan log error di atas. Caranya tinggal ubah baris kode dibawah ini saja.

$product->ID to $product->get_id()

 

Hapus styling Galeri Gambar Bawaan di WordPress

Ketika kita buat sebuah galeri foto atau gambar di WordPress ada style bawaan yang membuat grid gambar sesuai pilihan ketika memilih foto atau gambar di media library (saat upload gambar). Disini sangat mengganggu untuk tampilan theme yang kita kembangkan atau mungkin theme yang ada. Jika memang ini mengganggu bisa dihilangkan dengan tambahan filter wordpress di bawah. Setelah itu bisa styling manual sesuai keinginan kita. 🙂

<style type='text/css'>
	#gallery-1 {
		margin: auto;
	}
	#gallery-1 .gallery-item {
		float: left;
		margin-top: 10px;
		text-align: center;
		width: 33%;
	}
	#gallery-1 img {
		border: 2px solid #cfcfcf;
	}
	#gallery-1 .gallery-caption {
		margin-left: 0;
	}
	/* see gallery_shortcode() in wp-includes/media.php */
</style>

Tambahkan baris di bawah ke file functions.php di theme yang aktif saat ini.

add_filter( 'use_default_gallery_style', '__return_false' );

Pemula VPS? Install WordPress di VPS tinggal klik-klik aja !

Pemula VPS? Install WordPress di VPS tinggal klik-klik aja ! – Sebelumya saya sudah menulis beberapa artikel yang berkaitan tentang manajemen VPS khususnya untuk Web server. Ada banyak sekali layanan yang memudahkan dalam memanajemen web server di VPS sendiri. Seperti Kloxo MR, EasyEngine, CentminMod dan yang sekarang akan kentos tulis adalah ServerPilot.
Jika EasyEngine sudah sangat mudah, ServerPilot bisa dibilang sama tapi beda. Lho kok sama tapi beda gimana sih? Maksudnya sama-sama mudahnya dan yang bikin beda ialah kamu tidak perlu menyentuh VPS via CLI (Terminal/Putty).
Kamu hanya login ke dashboard ServerPilot
connect server to serverpilot
Dan koneksikan ServerPilot dengan VPS kamu dengan memasukan IP, Root password dan SFTP password (biasanya sama dengan root password)
buat aplikasi di serverpilot
Kemudian kamu disuruh memilih akan menginstall aplikasi apa?
Karena versi gratisan maka yang ada hanya WordPress saja. Jika kamu upgrade ke paket berbayar akan terbuka beberapa fitur premium yang disediakan ServerPilot.
Mau gratis credit $10 di ServerPilot? Daftar sekarang pake link kentos berikut sebelum ditutup https://www.kentos.org/go/serverpilot/
serverpilot paket
Tapi kalo kamu cuma mau install WordPress saja cukup kok. Apalagi kita tidak perlu melakukan pengaturan database dan lain-lain.
Setelah kamu selesai membuat aplikasi. WordPress yang terinstall langsung bisa diakses di domain kamu. 🙂
 
 

Membuat Featured Image Otomatis Di Setiap Post WordPress

Kalo kamu baca ini pasti lagi bingung cara membuat Featured Image di WordPress secara otomatis ya? Atau kelupaan ada beberapa post di blog kamu yang tidak menggunakan Featured Image?

Langsung saja salin PHP code dibawah ini ke file functions.php di tema WordPress kamu. Taruh aja paling bawah.

//featured image
function autoset_featured() {
          global $post;
          $already_has_thumb = has_post_thumbnail($post->ID);
              if (!$already_has_thumb)  {
              $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
                          if ($attached_image) {
                                foreach ($attached_image as $attachment_id => $attachment) {
                                set_post_thumbnail($post->ID, $attachment_id);
                                }
                           }
                        }
      }
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');

Silahkan kamu cek apakah tiap post sudah ada featured image atau belum? Jika sukses atau ada masalah tanyakan di komentar ya.

WordPress : Muncul "Notice: WP_Widget is deprecated since version 4.3.0"

Ketika update wordpress muncul “Notice: WP_Widget is deprecated since version 4.3.0” lalu bagimana menghilangkan peringatan tersebut?

Notice: The called constructor method for WP_Widget in ... is deprecated since version 4.3.0! Use __construct() instead. in ...\wp-includes\functions.php on line 3891

Setelah saya telusuri ditemukan code :

$this->WP_Widget('karisma-recent-posts', __('Karisma Recent Posts ', $this->localization_domain), $widget_ops);

Solusinya adalah dengan mengganti $this->WP_Widget dengan parent::__construct seperti di bawah ini :

parent::__construct('karisma-recent-posts', __('Karisma Recent Posts ', $this->localization_domain), $widget_ops);

Selesai sudah silahkan coba reload/refresh halaman web dan peringatan tersebut akan hilang.

WordPress saya selalu muncul "The file 'wp-config.php' already exists." ??

Setelah sekian bulan saya istirahat didunia blogging akhirnya saya kembali untuk mengurus beberapa blog yang terbengkalai. Ada beberapa blog yang akan saya pindah ke VPS yang baru namun saat migrasi muncul masalah baru yang belum pernah saya ketahui. Yaitu, WordPress saya selalu muncul “The file ‘wp-config.php’ already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.”
Saya pun mencari trobleshooting melalui mesin pencari dan masuk ke forum WordPress tentunya, karena banyak orang yang menanyakan hal yang sama.
Mulai dari pertannyaan dari @winkredible

I have just installed a fresh copy of WordPress. The admin page works fine but the front page of wordpress has the following error.
The file ‘wp-config.php’ already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.

yang kemudian dijawab oleh mr @t-p

Try recreating the wp-config.php file:
– First, save your existing wp-config.php file as wp-config.phpOLD.
– To recreate a new one, make a copy of wp-config-sample.php (which comes with the WprdPress) and add all of your database connection details.
– Then save the new file as wp-config.php and upload it to your WP folder.

Namun belum menemukan hasil yang diinginkan alias sama saja.
Lanjut ke hasil pencarian lainnya menemukan dari situs stackoverflow.com yang ditanyakan oleh mgrantnz:

I clicked on the ‘Update WordPress’ link in the admin dashboard of my WordPress site, and I am getting this error:
“The file ‘wp-config.php’ already exists. If you need to reset any of the
configuration items in this file, please delete it first. You may try installing now.”
When I try to click the “installing now” link, it seems that WordPress is installing fresh. I want to keep all of the content of my WordPress installation.
I have tried to change the name of the wp-config.php file but that didn’t do anything.

Dan ditemukanlah jawaban yang masuk akal oleh Pierre Roels :

Is just a browser cache.
On first URL load, you are redirected from domain.ext to domain.ext/wp-admin/setup-config.php
If you are on Chrome, just open the developers console, go to “Network” tab. Reload the page and right click anywhere in the console, and hit “Clear browser cache”.
Now refresh again and you will see your website

Lalu saya coba dengan menggunakan mode penyamaran atau private browsing yang ada di firefox dan berhasil !!! Is just a browser cache !!! thanks Pierre Roels!!

WordPress: Cara Memindahkan Postingan di Trash ke Draft

Trash atau tempat sampah ini adalah tempat pembuangan sementara sebelum untuk selamanya dihapus. Jadi ketika postingan pada blog WordPress masih ada di dalam trash itu tandanya masih bisa dikembalikan (Restore) ke tempat sebelum dimasukan trash atau dihapus.
Jadi ketika postingan sudah berstatus published dan kemudian dihapus atau dipindah ke trash maka bisa dikembalikan lagi dengan memilih fitur restore. Namun ketika pemilik blog ingin melakukan editing (memasukan kedalam draft) atau tidak ingin mengembalikan postingan ke published timbulah masalah, karena ketika melakukan restore ini akan kembali ke status published.
Dengan munculnya kasus diatas maka timbul pertanyaan,”bagaimana cara memindahkan postingan di trash ke draft jika sebelum dihapus berstatus published?”
Kenapa timbul pertanyaan itu? Karena WordPress sendiri tidak menyediakan opsi untuk memilih kemana akan me-restore postingan tersebut.

Restore trash to draft WordPress
Hanya ada Opsi Restore dan Delete Permanently

Nah, terlihat pada screenshot di atas bahwa WordPress pada dasarnya hanya memberikan dua opsi itu saja, Restore dan Delete Permanently. Sedangkan restore hanya bisa mengembalikan ke status sebelum dihapus (dipindah ke trash).
Ya, mungkin untuk sebagian orang kan bisa dengan merestore lalu bisa dipindahkan ke draft secara manual. Tapi, masalahnya disini ketika postingan yang dimiliki tidak sebanyak jumlah jari manusia saja, lantas apakah akan dilakukan manual?
Untuk itu disiasati langsung menggunakan Query MySQL langsung yang bisa dijalankan pada phpMyAdmin. Berikut Query yang digunakan untuk memindahkan postingan pada trash ke draft secara masal (bulk) :

UPDATE wp_posts SET post_status = 'draft' WHERE post_status = 'trash'  LIMIT 100;

wp_posts adalah tabel dimana menyimpan postingan yang telah dibuat. Disinilah terdapat field yang menyimpan data-data tersebut, seperti post_status. Mulailah pencarian dan pembaruan data post_status akan diubah menjadi draft dimana post_status memiliki data trash, selain itu tidak akan diubah. LIMIT 100 disini untuk membatasi query atau perintah hanya memperbarui data maksimal 100 data saja, dengan maksud tidak memberatkan server atau karena alasan lain (bisa disesuaikan sendiri untuk jumlah limit/batasnya).