Mengoptimalkan WordPress Setelah Install

Cara menginstall CMS WordPress di Shared Hosting sangatlah mudah, sudah tersedia tool auto installer yang dapat digunakan dan hanya diperlukan beberapa langkah saja untuk menyelesaikan proses instalasinya sesuai dengan settingan defaultnya.

Namun disarankan untuk mengoptimasi beberapa pengaturan default lebih lanjut, agar performa WordPress menjadi lebih optimal dan juga tentu akan meningkatkan sisi keamanan pada situs.

Optimasi ini hanya ditujukan untuk penggunaan WordPress dengan Hosting mandiri (WordPress.org), bukan ditujukan pada WordPress.com.

Dan, untuk versi WordPress sendiri yang digunakan pada saat ini adalah versi WordPress 4.9, dengan asumsi kita hanya melakukan edit file functions.php (Function_Reference)pada editor Admin WordPress Anda. Berikut langkah-langkahnya :

1. Disable HTML pada kolom komentar.

Tujuannya adalah mengurangi Komentar SPAM, dengan cara mematikan penggunaan tag html pada kolom komentar (Hyperlink). Penggunaan rel = nofollow pada kolom komentar saja tidak cukup untuk mengurangi SPAM. Tambahkan kode berikut ini pada file functions.php.

//Disable HTML Comments
add_filter ('pre_comment_content', 'esc_html');

2. Mengapus META TAGS yang tidak diperlukan pada informasi Header.

Tujuannya adalah untuk menonaktifkan informasi versi WordPress yang sedang digunakan dan juga beberapa Meta Tag yang merupakan petunjuk buat para Hacker WordPress. Informasi ini biasa diakses melalui source page (ctrl + u).

Tentu ini tidak aman jika Anda masih menggunakan WordPress versi yang lebih tua karena masalah upgrade yang biasanya tidak kompatibel dengan beberapa Plugins dan Themes. Tambahkan kode berikut ini :

//Remove Unused Meta Tag Header
remove_action ('wp_head', 'wp_generator');
remove_action ('wp_head', 'wlwmanifest_link');
remove_action ('wp_head', 'rsd_link');

3. Hapus penggunaan RSS FEEDS yang tidak penting.

Tujuannya adalah hanya fokus untuk mempublikasikan RSS FEED utama dan menonaktifkan feed bawaan default seperti : feed blog, feed artikel, umpan komentar, feed kategori, feed arsip dan lainnya. Tambahkan kode berikut ke file functions.php Anda:

//Remove Unused RSS FEEDS
remove_action ('wp_head', 'feed_links', 2);
remove_action ('wp_head', 'feed_links_extra', 3);

4. Remove WP Version.

Dengan menyembunyikan versi WordPress, akan mengurangi resiko serangan dengan memanfaatkan celah keamanan WordPress (Bug), gunakan kode di bawah untuk menyembunyikan versi WordPress dan selalu Upgrade WordPress ke versi yang terbaru.

//Hiding WP Version
function so_remove_version() {
	return '';
}
add_filter('the_generator', 'so_remove_version');

5. Disable Ping Back.

Tujuannya adalah mencegah serangan Brute Force dan DDOS. Pingback dapat digunakan dalam serangan DDOS terhadap situs-situs lain. Penyerang dapat memanfaatkan fungsi pingback melalui perintah sederhana dan permintaan XML-RPC. Dengan demikian, ribuan situs WordPress yang sah dapat dimanfaatkan untuk meluncurkan serangan DDoS skala besar. Tambahkan kode berikut ke file functions.php Anda:

//Disable PingBack
add_filter( 'xmlrpc_methods', 'so_remove_ping' );
function so_remove_ping( $methods ) {
   unset( $methods['pingback.ping'] );
   unset( $methods['pingback.extensions.getPingbacks'] );
   return $methods;
}

6. Disable penggunaan XML-RPC.

Serupa dengan tujuan Pingback, penyerang dapat memanfaatkan kerentanan XML RPC untuk meluncurkan serangan DDoS dan Brute Force dalam skala besar. Tambahkan kode berikut ke file functions.php Anda:

// Disable use XML-RPC
add_filter( 'xmlrpc_enabled', '__return_false' );

7. Enable HTML Compression.

Tujuannya adalah mengecilkan ukuran file HTML (Kompresi) untuk mengasilkan page load yang lebih cepat. Copy Paste kode berikut ke file functions.php :

//Enable HTML Compression
class WP_HTML_Compression
{
    // Settings
    protected $compress_css = true;
    protected $compress_js = true;
    protected $info_comment = true;
    protected $remove_comments = true;

    // Variables
    protected $html;
    public function __construct($html)
    {
   	 if (!empty($html))
   	 {
   		 $this->parseHTML($html);
   	 }
    }
    public function __toString()
    {
   	 return $this->html;
    }
    protected function bottomComment($raw, $compressed)
    {
   	 $raw = strlen($raw);
   	 $compressed = strlen($compressed);
   	 
   	 $savings = ($raw-$compressed) / $raw * 100;
   	 
   	 $savings = round($savings, 2);
   	 
   	 return '<!--HTML compressed, size saved '.$savings.'%. From '.$raw.' bytes, now '.$compressed.' bytes-->';
    }
    protected function minifyHTML($html)
    {
   	 $pattern = '/<(?<script>script).*?</scripts*>|<(?<style>style).*?</styles*>|<!(?<comment>--).*?-->|<(?<tag>[/w.:-]*)(?:".*?"|'.*?'|[^'">]+)*>|(?<text>((<[^!/w.:-])?[^<]*)+)|/si';
   	 preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);
   	 $overriding = false;
   	 $raw_tag = false;
   	 // Variable reused for output
   	 $html = '';
   	 foreach ($matches as $token)
   	 {
   		 $tag = (isset($token['tag'])) ? strtolower($token['tag']) : null;
   		 
   		 $content = $token[0];
   		 
   		 if (is_null($tag))
   		 {
   			 if ( !empty($token['script']) )
   			 {
   				 $strip = $this->compress_js;
   			 }
   			 else if ( !empty($token['style']) )
   			 {
   				 $strip = $this->compress_css;
   			 }
   			 else if ($content == '<!--wp-html-compression no compression-->')
   			 {
   				 $overriding = !$overriding;
   				 
   				 // Don't print the comment
   				 continue;
   			 }
   			 else if ($this->remove_comments)
   			 {
   				 if (!$overriding && $raw_tag != 'textarea')
   				 {
   					 // Remove any HTML comments, except MSIE conditional comments
   					 $content = preg_replace('/<!--(?!s*(?:[if [^]]+]|<!|>))(?:(?!-->).)*-->/s', '', $content);
   				 }
   			 }
   		 }
   		 else
   		 {
   			 if ($tag == 'pre' || $tag == 'textarea')
   			 {
   				 $raw_tag = $tag;
   			 }
   			 else if ($tag == '/pre' || $tag == '/textarea')
   			 {
   				 $raw_tag = false;
   			 }
   			 else
   			 {
   				 if ($raw_tag || $overriding)
   				 {
   					 $strip = false;
   				 }
   				 else
   				 {
   					 $strip = true;
   					 
   					 // Remove any empty attributes, except:
   					 // action, alt, content, src
   					 $content = preg_replace('/(s+)(w++(?<!baction|balt|bcontent|bsrc)="")/', '$1', $content);
   					 
   					 // Remove any space before the end of self-closing XHTML tags
   					 // JavaScript excluded
   					 $content = str_replace(' />', '/>', $content);
   				 }
   			 }
   		 }
   		 
   		 if ($strip)
   		 {
   			 $content = $this->removeWhiteSpace($content);
   		 }
   		 
   		 $html .= $content;
   	 }
   	 
   	 return $html;
    }
   	 
    public function parseHTML($html)
    {
   	 $this->html = $this->minifyHTML($html);
   	 
   	 if ($this->info_comment)
   	 {
   		 $this->html .= "n" . $this->bottomComment($html, $this->html);
   	 }
    }
    
    protected function removeWhiteSpace($str)
    {
   	 $str = str_replace("t", ' ', $str);
   	 $str = str_replace("n",  '', $str);
   	 $str = str_replace("r",  '', $str);
   	 
   	 while (stristr($str, '  '))
   	 {
   		 $str = str_replace('  ', ' ', $str);
   	 }
   	 
   	 return $str;
    }
}

function wp_html_compression_finish($html)
{
    return new WP_HTML_Compression($html);
}

function wp_html_compression_start()
{
    ob_start('wp_html_compression_finish');
}
add_action('get_header', 'wp_html_compression_start');

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.