Kata kunci pertama sebagai direktori url search WordPress

Masih berkutat dengan halaman search WordPress? bagaimana membuat kata kunci pertama sebagai direktori url search di halaman pencarian? contohnya seperti url search berikut ini:

  • http://localhost.com/search/blog+wp (Default)

Diubah menjadi

  • http://localhost.com/blog/blog-wp.html
  • http://localhost.com/hello/hello-world.html

Struktur url search ini sangat dinamik karena akan membuat banyak bentuk direktori sesuai dengan kata kunci pertama yang tersedia. Cara membuatnya sebagai berikut (Pakai WordPress Versi 3.4.1):

  1. Tambahkan kode rewrite global struktur permalink berikut di bagian paling atas dalam file functions.php theme WP Anda
    function change_url_search_base_wp() {
    global $wp_rewrite;
    $wp_rewrite->search_structure = $wp_rewrite->front.'/%search%.html';
    return $wp_rewrite;
    }
    add_action('init', 'change_url_search_base_wp');
    
  2. Selipkan kode berikut di baris 2178 file wp-includes/query.php (WordPress versi 3.4.1), tepat setelah kode if ( !empty($q['s']) ) {.
    //added by JEVUSKA
    $tambahan = array('+','-');
    $tambahan2 = array('.html');
    $q['s'] = str_replace ( $tambahan,' ',$q['s']);
    $q['s'] = str_replace ( $tambahan2,'',$q['s']);
    $q['s'] = strstr ( $q['s'],'/'); 
    $q['s'] = preg_replace('/&.+?;/', '', $q['s']);
    $q['s'] = preg_replace('/\s+/', ' ', $q['s']);
    $q['s'] = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', ' ', $q['s']);
    $q['s'] = preg_replace('|-+|', ' ', $q['s']);
    $q['s'] = preg_replace('/&#?[a-z0-9]+;/i','',$q['s']);
    $q['s'] = preg_replace('/[^%A-Za-z0-9 _-]/', '', $q['s']);
    $q['s'] = explode(" ",trim($q['s']));
    $q['s'] = array_unique($q['s']);
    $q['s'] = implode(" ",$q['s']);
    

Langkah terakhir adalah masuk ke dashboard WP Anda Setting/Permalinks Save Changes. Sekarang cobalah mengetikkan url search seperti contoh di atas. Pastikan struktur url halaman lainnya di dalam blog Anda tidak sama dengan struktur url search yang dibentuk untuk menghindari bentrok antar permalink.

Kode PHP mendapatkan kata pertama dari kalimat/keywords

Berikut ini adalah beberapa contoh function untuk mendapatkan kata pertama dari suatu kalimat atau kata kunci.

<?php
$katakunci = 'Hello world blog';
result = explode(' ',trim($katakunci));
echo result[0]; // output-nya hello
?>

atau

<?php
$katakunci = 'Hello world blog';
echo strtok($katakunci, " "); // output-nya hello
?>

 Google

Cara membuat shortcut untuk command CMD

Ada cara sederhana membuat jalan pintas alias shortcut untuk command line pada program CMD terutama cmd favorit Anda. Shortcut tersebut akan tempil pada desktop Anda dan hanya dengan sekali klik, CMD favorit Anda akan berjalan. Berikut cara membuatnya:

  1. Klik kanan pada ruang kosong di desktop untuk membuka menu konteks
  2. Pilih New
  3. Pilih Shortcut dengan klik kiri
  4. Ketik di area kotak cmd /k ditambah perintah apapun yang Anda inginkan.

    Misalnya, jika Anda ingin shortcut untuk ping situs jevuska, isikan seperti ini:
    cmd /k ping jevuska.com

  5. Kemudian Next
  6. Beri nama untuk shortcut Anda dan klik tombol Finish

Cara membuat shortcut untuk command line CMD prompt ini bekerja untuk semua versi windows termasuk Windows 7 dan Windows 8.


 Google

Filter/block kata di search WordPress (Plugin Bad Words)

Jika Anda mempunyai blog WordPress dan ingin filter/block beberapa kata yang tidak diinginkan (bad words) dalam kotak pencarian WordPress (halaman search WordPress), ada beberapa cara yang bisa Anda lakukan. Yang pertama adalah rewrite halaman search yang mengandung kata kunci bad words menjadi halaman 404 (error page) dan kedua adalah membuat halaman search dengan kata kunci bad words menjadi halaman yang mengandung meta robots noindex.

Cara membuat filter/blokir bad words

Membuat Regex Bad Words

Ada 2 tipe regex untuk melakukan filter/block terhadap bad words.

#(.*?)(bing|google|youtube|facebook)(.*?)#
Contoh: kalimat yang mengandung kata bing, kambing, bingung, atau bingkisan akan cocok dengan kata bing.

/\b(bing|google|youtube|facebook)\b/
Regex ini hanya mencocokkan kata-kata yang telah ditentukan. Contoh: jika Anda telah menentukan kata bing maka hanya kalimat yang mangandung kata bing semata-mata yang cocok.

Jadi, di antara kedua tipe regex di atas, Anda tinggal pilih tipe regex mana yang diinginkan. Kemudian buatlah sebuah file PHP misalnya block_bad_words.php dan isi dengan kode regex di atas seperti berikut:

<?php
$block_bad_words="/\b(bing|google|youtube|facebook)\b/";
?>

Kode diatas untuk tipe regex yang kedua. Simpan file block_bad_words.php di directory theme WP Anda, sama dengan file-file theme yang Anda pakai. Anda dapat menambahkan sebanyak mungkin kata-kata yang diselingi dengan tanda “|” (tidak pakai kutip) sesuai dengan kode di atas, jangan ada spasi atau special character dan semua kata harus dalam bentuk lowercase (huruf kecil).

Block Bad Words di halaman pencarian WordPress (Search WP) menjadi halaman 404 error

Metode ini akan me-rewrite halaman search yang mengandung kata yang Anda blokir menjadi halaman 404 theme WordPress. Tempatkan kode berikut di dalam file search.php theme WP Anda. Simpan pada bagian paling atas!.

<?php
include 'block_bad_words.php';
if (preg_match($block_bad_words,strtolower($s))) {
  global $wp_query;
  $wp_query->set_404();
  status_header( 404 );
  get_template_part( 404 ); exit();
  }
?>

Filter/blokir bad words di halaman search WordPress menjadi halaman noindex

Jika Anda menginginkan search engine tidak meng-index halaman dengan kata kunci bad words, tempatkan kode plugin function berikut di dalam file functions.php theme WP Anda.

<?php
function noindex_bad_words() {
  if (is_search()){
  include 'block_bad_words.php';
    if (preg_match($block_bad_words,strtolower(get_search_query()))) {
      echo '<meta name="robots" content="noindex,follow" />';
      }
      else
      {
      echo '<meta name="robots" content="index,follow" />';
      }
   }
}
add_action('wp_head', 'noindex_bad_words');
?>

Kode ini akan menempatkan meta robots noindex secara otomatis di head html halaman pencarian dengan kata kunci yang mengandung bad words. Sedangkan halaman search yang tidak mengandung kata kunci bad words akan tampil meta robots index. Jadi pastikan terlebih dahulu halaman search WordPres Anda tidak mengandung meta robots sebelumnya, supaya tidak duplikat meta atau saling tumpang tindih.

Tutorial ini sekaligus menjawab pertanyaan-pertanyaan dari teman-teman yang bermain dengan auto generated content yang memanfaatkan halaman search WordPress. Metode regex dan function preg match PHP di atas juga dapat Anda manfaatkan untuk melakukan filter terhadap konten yang di-generate.

Kode regex mana yang Anda mau pakai? metode blokir mana yang Anda inginkan? mau menggabungkan keduanya? Semua terserah Anda. Jika ingin menggabungkan keduanya Anda harus membuat dua file block_bad_words.php dengan nama yang berbeda dan memanggilnya masing-masing dengan kedua kode filter yang berbeda pula.

Plugin Bad Words Search Noindex

Khusus untuk bad keywords noindex, Anda bisa pakai plugin Bad Words Search Noindex berikut, tambahkan kata bad words-nya dan simpan dengan nama file bad-words-search-noindex.php. Letakkan file ini di directory plugin WordPress Anda dan aktifkan melalui dashboard Anda. Anda juga bisa mengubah bentuk regex dalam plugin ini sesuai dengan penjelasan sebelumnya.

<?php
/**
 * @package bad-words-search-noindex
 */
/*
Plugin Name: Bad Words Search Noindex
Plugin URI: http://www.jevuska.com/2013/05/29/filter-block-kata-di-search-wordpress-plugin-bad-words
Description: Create meta robots noindex follow for bad keywords in search result WordPress blog.
Version: 1.0.0
Author: Jevuska
Author URI: http://www.jevuska.com/
*/
function noindex_bad_words() {
  if (is_search()){
   //add more keywords in regex code
   $block_bad_words="/\b(bing|google|youtube|yahoo|facebook)\b/";
    if (preg_match($block_bad_words,strtolower(get_search_query()))) {
      echo '<meta name="robots" content="noindex,follow" />';
      }
      else
      {
      echo '<meta name="robots" content="index,follow" />';
      }
   }
}
add_action('wp_head', 'noindex_bad_words');
?>

 Google

Kode Command Delete File/Cache Melalui Cron Jobs Cpanel secara periodik

Cron Jobs adalah sejenis software yang berfungsi untuk menjalankan program-program secara terjadwal/periodik dengan menggunakan suatu perintah/command yang tersimpan dalam bentuk file yang disebut Crontab. Software ini ini berjalan dalam server berbasis Linux atau BSD. Contoh-contoh program yang biasa dilakukan melalui Cron jobs seperti backup file, download file atau email, menghapus file dalam suatu folder dan lain-lain.

Menggunakan Cron jobs untuk aktivitas yang cukup banyak diperlukan hosting yang cukup tangguh seperti VPS atau dedicated server. Walaupun begitu Anda juga bisa menggunakan Cron jobs untuk shared hosting untuk aktivitas seperlunya seperti menghapus jumlah file yang terlalu banyak dalam suatu folder pada waktu tertentu. Pada shared hosting seperti Hostgator atau Bluehost biasanya kapasitas disk storage dan jumlah file yang bisa disimpan sangat terbatas, maka diperlukan beberapa tindakan untuk menghapus jumlah file tersebut secara berkala/periodik. Di sinilah bagaimana fungsi software Cron jobs ini sangat berguna.

Salah satu contoh kasus adalah jika Anda menggunakan cache untuk blog/website Anda, yang mana jumlah file dalam folder cache yang terus bertambah, maka diperlukan crontab untuk melakukan tugas men-delete file-file yang bertambah tersebut secara periodik.

Contoh command delete file cache melalui Cron Jobs di Cpanel secara periodik

Misalnya kita ingin menghapus file-file cache sekali sehari untuk file-file cache yang dibuat 7 hari yang lalu, maka command di cron jobs seperti ini:

rm -f `find /home2/username/public_html/foldername/cache -mtime +7 -name *.txt`

Jika tidak berhasil, pakai cara ini (berdasarkan menit):

find /home/username/public_html/foldername/cache -mmin +1 -type f -name "*.gz" -exec rm -f {} \;
  • rm -f adalah syntax command yang berfungsi untuk menghapus file.
  • find adalah command untuk mencari dimana letak file yang akan dituju, dalam hal ini adalah direktori /home2/username/public_html/foldername/cache.
  • /home2/username/ biasanya adalah nama folder dari hasil username server Anda yang sudah ditentukan oleh pihak shared hosting.
  • foldername adalah nama folder yang telah Anda buat untuk website Anda.
  • cache adalah nama folder file-file cache tersimpan.
  • -mtime +7 adalah waktu last modified suatu file, dalam hal ini file-file yang dibuat pada 7 hari yang lalu. -mmin +1 artinya delete file yang dibuat lebih dari 1 menit yang lalu.
  • .txt adalah ekstensi/jenis file yang ingin Anda hapus/delete.

Cara membuat crontab di Cron jobs Cpanel

  • Masuk di Cpanel dan cari software Cron jobs.
  • Lakukan penjadwalan (Common Settings) sesuai dengan keinginan Anda.
  • Masukkan perintah/command seperti kode di atas untuk file crontab Anda nantinya. Untuk command di atas, ganti kode /home2/username/public_html/foldername/cache sesuai dengan direktori tempat file yang Anda ingin hapus, begitu juga dengan waktu file dan jenis filenya.
  • Lalu tekan tombol Add New Cron Job untuk membuat crontab Anda. Selesai!

Contoh Command Crontab lainnya

Delete semua jenis file termasuk sub foldernya
rm -R /home2/username/public_html/foldername/*

Backup file yang dibuat 7 hari yang lalu
find /home/username/public_html/top_folder/{folder,folder1,folder2,folder3,folder4,folder5} -type f -mtime +7 -exec mv -v {} /backup/oldfiles \;

Please Note
Harap berhati-hati menggunakan syntax command Cron jobs, pastikan lakukan backup sebelumnya untuk file-file website penting Anda.


 Bagikan

Parsing RSS Menggunakan Curl dan SimpleXmlElement

Kali ini kita coba menggunakan Curl dan fungsi SimpleXmlElement untuk melakukan parsing file format RSS atau xml. Sebelumnya beberapa fungsi parsing seperti simplexml_load_file juga berfungsi untuk parsing RSS.

Berikut ini contoh kode PHP Curl dan SimpleXmlElement yang digabung untuk parsing RSS mesin pencari Bing.

<?php
// Fungsi Curl
function curl($url){
    $headers[]  = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
    $headers[]  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    $headers[]  = "Accept-Language:en-us,en;q=0.5";
    $headers[]  = "Accept-Encoding:gzip,deflate";
    $headers[]  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $headers[]  = "Keep-Alive:115";
    $headers[]  = "Connection:keep-alive";
    $headers[]  = "Cache-Control:max-age=0";
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_MAXREDIRS, 2);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_ENCODING, "gzip");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}
$rssnull = curl('http://www.bing.com/search?q=melissa+joan+hart&count=10&format=rss');
//Fungsi SimpleXmlElement
$doc = new SimpleXmlElement($rssnull, LIBXML_NOCDATA);
function parseRSS($doc)
{
    echo "<strong>".$doc->channel->title."</strong><br/>";
    $cnt = count($doc->channel->item);
    for($i=0; $i<$cnt; $i++)
    {
	$url 	= $doc->channel->item[$i]->link;
	$title 	= $doc->channel->item[$i]->title;
	$desc = $doc->channel->item[$i]->description;
 	echo '<a href="'.$url.'">'.$title.'</a><br/>'.$desc.'<br/>';
    }
}
parseRSS($doc);
?>

Keterangan:

  • $doc->channel->title: Menampilkan kata kunci
  • $url = $doc->channel->item[$i]->link;: Menampilkan tautan/link
  • $title = $doc->channel->item[$i]->title;: Menampilkan judul/title
  • $desc = $doc->channel->item[$i]->description;: Menampilkan deskripsi

Cara membuat pagination PHP

Di Internet, paging atau pagination digunakan untuk menampilkan hal-hal atau sejumlah hasil pada halaman hasil mesin pencari, atau menampilkan sejumlah postingan. Pagination digunakan dalam beberapa bentuk di hampir setiap aplikasi web untuk membagi data dan menampilkannya dengan beberapa halaman. Ada banyak bentuk dan kegunaan yang berbeda dalam pagination seperti apakah harus menampilkan link “Previous” dan “Next”, dalam bentuk angka atau apakah harus terdapat link ke paging pertama dan terakhir di setiap halaman.

Cara membuat pagination yang benar harus mampu menentukan jumlah data yang ditampilkan dalam satu halaman. Berikut ini adalah contoh script pagination yang dibuat dengan kode PHP untuk menampilkan data Anda apakah diambil dari database sql, html, xml,json atau dalam format web lainnya.

<?php
$TotalFiles= 1000; //tentukan jumlah total file
$FilePerPage = 100; //tentukan jumlah file per halaman
$PagesTotal = ceil($TotalFiles / $FilePerPage);
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
   $currentpage = (int) $_GET['page'];
} else {
   $currentpage = 1;
}
if ($currentpage > $PagesTotal) {
   $currentpage = $PagesTotal;
}
if ($currentpage < 1) {
   $currentpage = 1;
}
$offset = ($currentpage - 1) * $FilePerPage;
$range = 10;
if ($currentpage > 1) {
   echo"<a title='First' href='http://localhost/index.php?page=1'><<</a> ";
   $prevpage = $currentpage - 1;
   echo "<a title='Previous' href='http://localhost/index.php?page=$prevpage'><</a>";
}
for ($i = ($currentpage - $range); $i < (($currentpage + $range) + 1); $i++) {
   if (($i > 0) && ($i <= $PagesTotal)) {
      if ($i == $currentpage) {
         echo " [<b>$i</b>] ";
      } else {
         echo " <a href='http://localhost/index.php?page=$i'>$i</a>";
      } 
   }
}
if ($currentpage != $PagesTotal) {
   $nextpage = $currentpage + 1;
   echo " <a title='Next' href='http://localhost/index.php?page=$nextpage'>></a>";
   echo "<a title='Last' href='http://localhost/index.php?page=$PagesTotal'>>></a>";
} 
?>

Ganti keterangan jumlah dan struktur url yang ditampilkan dalam kode pagination PHP di atas sesuai dengan data yang Anda miliki. Tampilan kode paging ini seperti gambar berikut:

Pagination PHP

Scrap situs dengan PHP Simple HTML DOM Parser

PHP HTML DOM parser berfungsi pada PHP 5+ yang digunakan untuk memanipulasi halaman HTML dengan sangat mudah. Cara kerjanya sangat sederhana karena fungsi ini hanya mencari tag dari suatu halaman HTML meskipun halaman HTML tersebut tidak valid. Setelah mendapatkan tag yang dicari maka konten situs akan di-ekstrak per-baris alias di-scrap.

Contoh Penggunaan PHP Simple HTML DOM Parser

Misalkan kita akan mengekstrak konten dari situs Yahoo Indonesia dan kita fokuskan pada tab konten “Berita Utama”.

Situs Yahoo Indonesia (Berita Utama)

Maka kode parsing PHP-nya seperti ini:

<?php
include 'simple_html_dom.php';
$url = "http://id.yahoo.com";
$html = file_get_html($url);
if (method_exists($html,"find")) {
echo "<ul>";
foreach($html->find('div[class=y-tabpanels] a[class=y-fp-pg-controls]') as $element ){
echo "<li>".$element ->plaintext."</li>";
}
echo "</ul>";
}else{}
?>

Deskripsi:

  • simple_html_dom.php adalah file Simple HTML DOM Parser yang Anda bisa donwload di simplehtmldom.sourceforge.net. Simpan file tersebut di direktori situs Anda.
  • $url adalah url situs yang akan di parsing halaman HTML-nya.
  • find(‘div[class=y-tabpanels] a[class=y-fp-pg-controls]‘) adalah tag elemen dari situs.
  • $element ->plaintext adalah bentuk elemen html yang akan dihasilkan.

Hasil parsing dari kode di atas seperti ini:

Hasil Parsing Simple HTML DOM

Kode referensi PHP simple HTML DOM bisa didapatkan di simplehtmldom.sourceforge.net dan untuk mengambil konten dari situs lain, mintalah ijin terlebih dahulu dari sang pemilik situs. :)