Kadang kita perlu untuk mereplace sebuah text di WordPress secara realtime, misalnya untuk keperluan tanggal dinamis pada postingan atau pada widget dan seterusnya. Ternyata ada pluginnya, namanya Realtime Find and Replace. Untuk keperluan text statis Anda bisa gunakan itu, mudah penggunaannya.
Yang jadi masalah, plugin itu tidak bisa untuk untuk penggantian text secara dinamis. Penggantian secara dinamis yang memerlukan PHP, seperti update tanggal hari ini misalnya, tidak bisa dilakukan dengan itu. Akan tetapi jangan khawatir, ada solusinya mudah. Caranya sbb:
Buka dan edit functions.php dari theme aktif
Pergi ke bagian paling bawah, tambahkan line ini:
<?php function callback_LFqu4($buffer) { // modify buffer here, and then return the updated code return str_replace("[Waktu_Sekarang]", date("r"), $buffer); } function buffer_start_LFqu4() { ob_start("callback_LFqu4"); } function buffer_end_LFqu4() { ob_end_flush(); } add_action('wp_head', 'buffer_start_LFqu4'); add_action('wp_footer', 'buffer_end_LFqu4'); ?>
Dengan contoh di atas, setiap ada text [Waktu_Sekarang] entah itu di widget, post, theme, atau lainnya, akan dirubah menjadi date(“r”);
Di atas ada beberapa fungsi dengan akhiran _LFqu4, itu hanya string acak untuk membuat fungsi kita unique, jadi kita bisa membuat beberapa filter serupa dan menghindari konflik dengan filter serupa dari theme/plugin WordPress lainnya.
Contoh lainnya, untuk mengganti text [Hari_Ini_ZEp4i64] dengan tanggal hari ini dalam bahasa Indonesia, sebagai berikut:
<?php function callback_ZEp4i64($buffer) { // modify buffer here, and then return the updated code $kalender = new DateTime(); $kalender->setTimezone(new DateTimeZone('Asia/Jakarta')); $kalender->modify('-0 days'); $array_hari = array(1=>'Senin','Selasa','Rabu','Kamis','Jum\'at', 'Sabtu','Minggu'); $array_bulan = array(1=>'Januari','Februari','Maret','April', 'Mei','Juni','Juli','Agustus','September','Oktober', 'November','Desember'); $hari = $array_hari[$kalender->format('N')]; $tanggal = $kalender->format('j'); $bulan = $array_bulan[$kalender->format('n')]; $tahun = $kalender->format('Y'); return str_replace("[Hari_Ini_ZEp4i64]", "$tanggal $bulan $tahun", $buffer); } function buffer_start_ZEp4i64() { ob_start("callback_ZEp4i64"); } function buffer_end_ZEp4i64() { ob_end_flush(); } add_action('wp_head', 'buffer_start_ZEp4i64'); add_action('wp_footer', 'buffer_end_ZEp4i64'); ?>
Mudah kan? Selamat mencoba :)
Referensi:
http://stackoverflow.com/questions/772510/wordpress-filter-to-modify-final-html-output
http://www.dagondesign.com/articles/wordpress-hook-for-entire-page-using-output-buffering/
Leave a Reply