() translation by (you can also view the original English article)
Di bagian sebelumnya dari seri ini, kita mulai menggunakan 50 filter WordPress. Dipilih di antara ratusan, kami mulai dengan meninjau 10 dari mereka.
Dalam tutorial ini, kita akan melihat kumpulan lain dari mereka dan meninjau beberapa contoh masing-masing.
Mari kita mulai!
Bermain dengan Data yang Dapat Diterjemahkan di WordPress
Salah satu fitur paling keren dari WordPress adalah memiliki setiap teks yang siap untuk diterjemahkan. Jika bahasa situs web Anda adalah bahasa Inggris, Anda tidak memerlukan fitur ini - iya kan?
Filter gettext
mungkin bekerja untuk Anda dengan cara yang berbeda. Mari kita lihat contoh yang menarik.
Contoh: Memperbaiki Grammar Pengembang Lain!
Misalkan Anda menemukan plugin yang bagus untuk bekerja, tetapi Anda menyadari bahwa pemiliknya tidak berbicara bahasa Inggris dengan sangat baik, dan Anda melihat beberapa teks yang ditulis dengan buruk di dalam kodenya. Untungnya string dapat diterjemahkan, sehingga Anda akan dapat mengubah string tersebut dengan bantuan filter gettext
.
Mari kita lihat caranya:
1 |
<?php
|
2 |
|
3 |
add_filter( 'gettext', 'gettext_example', 20, 3 ); |
4 |
|
5 |
function gettext_example( $translated_text, $text, $domain ) { |
6 |
switch ( $translated_text ) { |
7 |
case 'E-meil Adress' : |
8 |
$translated_text = __( 'Email Address', 'plugin_text_domain' ); |
9 |
break; |
10 |
}
|
11 |
return $translated_text |
12 |
}
|
13 |
|
14 |
// Example source: https://speakinginbytes.com/2013/10/gettext-filter-wordpress/
|
15 |
|
16 |
?>
|
Membersihkan Slug
WordPress menggunakan fungsi bernama sanitize_title()
untuk membersihkan judul, mengganti spasi dengan tanda hubung dan membuatnya siap disimpan sebagai slug. Dengan filter sanitize_title
(yep, nama yang sama) Anda dapat memperluas fungsi ini.
Contoh: Menghapus Kata "The" dari Slug
Jika Anda tidak ingin kata "the" di slug Anda, Anda dapat menghapusnya dengan potongan kode di bawah ini:
1 |
<?php
|
2 |
|
3 |
add_filter( 'sanitize_title', 'sanitize_title_example' ); |
4 |
|
5 |
function sanitize_title_example( $title ) { |
6 |
$title = str_replace( '-the-', '-', $title ); |
7 |
$title = preg_replace( '/^the-/', '', $title ); |
8 |
return $title; |
9 |
}
|
10 |
|
11 |
?>
|
Solusi sederhana dan elegan.
Menetapkan Pengecualian untuk Texturisasi Shortcode
Filter yang praktis ini "memungkinkan Anda untuk menentukan shortcode mana yang tidak boleh dijalankan melalui fungsi wptexturize()
", seperti yang dikatakan dalam Codex.
Contoh: Mengecualikan Shortcode Anda dari Texturisasi
Jika Anda ingin shortcode yang Anda buat untuk dikecualikan dari texturization, gunakan kode ini untuk menambahkan nama shortcode Anda ke daftar "do not texturize":
1 |
<?php
|
2 |
|
3 |
add_filter( 'no_texturize_shortcodes', 'no_texturize_shortcodes_example' ); |
4 |
|
5 |
function no_texturize_shortcodes_example( $shortcodes ) { |
6 |
$shortcodes[] = 'myshortcode'; |
7 |
return $shortcodes; |
8 |
}
|
9 |
|
10 |
// Example source: http://codex.wordpress.org/Plugin_API/Filter_Reference/no_texturize_shortcodes
|
11 |
|
12 |
?>
|
Sangat mudah, bukan?
Menyaring Status Persetujuan Komentar
WordPress memiliki pemeriksaan komentar sendiri (yang mungkin agak terlalu mudah melawan spam) sebelum memutuskan apakah komentar harus ditandai sebagai spam, dikirim ke antrean moderasi, atau disetujui. Filter pre_comment_approve
memungkinkan plugin membantu dengan keputusan ini.
Contoh: Menandai Komentar dengan Nama Panjang Penulis sebagai Spam
Di negara saya, Turki, spammer komentar WordPress biasanya menggunakan nama yang sangat panjang, terkadang URL itu sendiri.
Dengan cuplikan kode di bawah ini, Anda dapat secara otomatis menghapus spammer yang menggunakan nama seperti "Domestic and International Shipping With Extremely Low Prices (Click Here for More Information)":
1 |
<?php
|
2 |
|
3 |
add_filter( 'pre_comment_approved', 'pre_comment_approved_example', 99, 2 ); |
4 |
|
5 |
function pre_comment_approved_example( $approved, $commentdata ) { |
6 |
return ( strlen( $commentdata['comment_author'] ) > 75 ) ? 'spam' : $approved; |
7 |
}
|
8 |
|
9 |
// Example source: https://gist.github.com/norcross/5468979
|
10 |
|
11 |
?>
|
Terima kasih khususnya kepada Andrew Norcross untuk ide ini!
Tip bonus: Jika Anda ingin menghapus spam dengan memeriksa panjang URL penulis komentar, gunakan 'comment_author_url' alih-alih 'comment_author'. Andrew Norcross menggunakan URL di tip aslinya, ngomong-ngomong.
Mengkonfigurasi Fitur "Post By Email"
Tahukah Anda bahwa Anda dapat memposting ke blog WordPress Anda melalui email? WordPress menawarkan fitur yang jarang digunakan ini dan memungkinkan Anda untuk mengaktifkan atau menonaktifkannya dengan filter enable_post_by_email_configuration
.
Contoh: Mengaktifkan atau menonaktifkan fitur "Post By Email"
Untuk beberapa alasan (seperti keamanan, mungkin) Anda mungkin ingin mematikan fitur ini. Dan Anda dapat melakukannya hanya dengan satu baris kode:
1 |
<?php
|
2 |
|
3 |
add_filter( 'enable_post_by_email_configuration', '__return_false', 100 ); |
4 |
|
5 |
?>
|
Atau jika Anda menggunakan WordPress Multisite dan Anda perlu mengaktifkan fitur ini (karena dinonaktifkan secara default pada Multisite), Anda dapat menggunakan fungsi __return_true()
:
1 |
<?php
|
2 |
|
3 |
add_filter( 'enable_post_by_email_configuration', '__return_true', 100 ); |
4 |
|
5 |
?>
|
Memfilter Judul Halaman Anda
Fungsi wp_title()
menampilkan judul halaman, yang kita lihat pada handle tab kami di browser. Dan fungsi wp_title memungkinkan kita untuk mengutak-atik judul-judul itu.
Contoh: Menulis Ulang Judul Halaman Anda - Cara yang Benar
WordPress "guru" yang disegani (dan editor di Tuts+ Code) Tom McFarlin menjelaskan kepada kami di blognya cara menulis ulang judul halaman kami dengan benar dengan fungsi wp_title()
dan filter dengan nama yang sama:
Karena wp_title adalah fungsi yang difilter, ini berarti bahwa kami dapat menyediakan hook kustom yang memungkinkan kami untuk menentukan skema untuk menampilkan judul kami tidak hanya lebih tepat, tetapi juga dengan benar.
1 |
<?php
|
2 |
|
3 |
add_filter( 'wp_title', 'wp_title_example', 10, 2 ); |
4 |
|
5 |
function wp_title_example( $title, $sep ) { |
6 |
global $paged, $page; |
7 |
|
8 |
if ( is_feed() ) |
9 |
return $title; |
10 |
|
11 |
// Add the site name.
|
12 |
$title .= get_bloginfo( 'name' ); |
13 |
|
14 |
// Add the site description for the home/front page.
|
15 |
$site_description = get_bloginfo( 'description', 'display' ); |
16 |
if ( $site_description && ( is_home() || is_front_page() ) ) |
17 |
$title = "$title $sep $site_description"; |
18 |
|
19 |
// Add a page number if necessary.
|
20 |
if ( $paged >= 2 || $page >= 2 ) |
21 |
$title = sprintf( __( 'Page %s', 'tuts_filter_example' ), max( $paged, $page ) ) . " $sep $title"; |
22 |
|
23 |
return $title; |
24 |
}
|
25 |
|
26 |
// Example source: http://tommcfarlin.com/filter-wp-title/
|
27 |
|
28 |
?>
|
Pastikan untuk memeriksa artikelnya. Terima kasih, Tom!
Memproses Komentar Sebelum Mereka Disimpan ke Database
Jika Anda memerlukan bantuan untuk mengubah data komentar (ID posting komentar, nama penulis, alamat email penulis, situs web penulis, jenis komentar, ID pengguna jika komentator adalah pengguna, jenis komentar dan konten komentar) , preprocess_comment
dapat membantu Anda.
Contoh: Matikan Volume Yellers
APAKAH ANDA MENDAPATKAN BANYAK KOMENTAR DI SETIAP KATA SETIAP ITU UPPERCASE? Jika iya, Anda dapat secara otomatis membuat huruf-huruf kecil dengan potongan kode di bawah ini:
1 |
<?php
|
2 |
|
3 |
add_filter( 'preprocess_comment', 'preprocess_comment_example' ); |
4 |
|
5 |
function preprocess_comment_example( $commentdata ) { |
6 |
if( $commentdata['comment_content'] == strtoupper( $commentdata['comment_content'] )) |
7 |
$commentdata['comment_content'] = strtolower( $commentdata['comment_content'] ); |
8 |
return $commentdata; |
9 |
}
|
10 |
|
11 |
// Example source: http://codex.wordpress.org/Plugin_API/Filter_Reference/preprocess_comment
|
12 |
|
13 |
?>
|
Keren, ya?
Mengelola Pengalihan Setelah Login
Filter kecil ini memungkinkan kita untuk mengatur pengalihan (selain panel administrasi) setelah proses login, yang bisa sangat berguna dalam beberapa kasus.
Contoh: Mengalihkan Pelanggan ke Beranda Situs Web
Jika Anda tidak ingin pengguna Anda (dengan peran "Subsciber") untuk melihat panel admin Anda setelah mereka login, Anda dapat mengarahkan mereka ke beranda situs web Anda:
1 |
<?php
|
2 |
|
3 |
add_filter( 'login_redirect', 'login_redirect_example', 10, 3 ); |
4 |
|
5 |
function login_redirect_example( $redirect_to, $request, $user ) { |
6 |
global $user; |
7 |
if ( isset( $user->roles ) && is_array( $user->roles ) ) { |
8 |
if ( in_array( 'subscriber', $user->roles ) ) { |
9 |
return home_url(); |
10 |
} else { |
11 |
return $redirect_to; |
12 |
}
|
13 |
}
|
14 |
return; |
15 |
}
|
16 |
|
17 |
?>
|
Codex memperingatkan kita tentang satu hal: "Pastikan Anda menggunakan add_filter
di luar is_admin()
, karena fungsi itu tidak tersedia ketika filter dipanggil."
Membuat Tautan Aksi untuk Plugin Anda
Jika Anda mengembangkan sebuah plugin, Anda mungkin bertanya-tanya bagaimana pengembang lain berhasil menambahkan tautan di bawah nama plugin mereka di halaman Plugins. Yah, mereka menggunakan filter ini.
Contoh: Menambahkan Tautan "Settings" agar Ditampilkan di Halaman Plugins
Untuk menambahkan tautan tindakan kustom di bawah nama plugin Anda pada daftar di halaman Plugin, Anda dapat menggunakan fungsi ini dan menghubungkannya ke filter:
1 |
<?php
|
2 |
|
3 |
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'plugin_action_links_example' ); |
4 |
|
5 |
function plugin_action_links_example( $links ) { |
6 |
$links[] = '<a href="' . get_admin_url( null, 'options-general.php?page=my_plugin_settings' ) . '">' . __( 'Settings' ) . '</a>'; |
7 |
return $links; |
8 |
}
|
9 |
|
10 |
// Example source: https://codex.wordpress.org/Plugin_API/Filter_Reference/plugin_action_links_(plugin_file_name)
|
11 |
|
12 |
?>
|
Perhatikan bahwa kami menggunakan konstanta __FILE__
untuk menghubungkan fungsi kami ke filter dengan nama plugin Anda. Rapi, ya?
Gunakan ini dengan hati-hati: Jika Anda menyalahgunakan area tersebut untuk mengisinya dengan tautan, orang akan mengingat Anda sebagai spammer.
Memfilter Konten di Dalam Editor Posting
Pernah ingin pra-isi editor posting untuk mulai menulis dengan template posting, atau meninggalkan catatan untuk penulis Anda? Anda bisa, berkat filter the_editor_content
.
Contoh: Meninggalkan Pengingat untuk Penulis Anda
Mari kita lakukan contoh "meninggalkan catatan untuk penulis": Jika Anda memiliki banyak hal untuk mengingatkan penulis blog Anda, Anda dapat mengisi editor posting dengan HTML dengan menggunakan kode ini:
1 |
<?php
|
2 |
|
3 |
add_filter( 'the_editor_content', 'the_editor_content_example' ); |
4 |
|
5 |
function the_editor_content_example( $content ) { |
6 |
// Only return the filtered content if it's empty
|
7 |
if ( empty( $content ) ) { |
8 |
$template = 'Hey! Don\'t forget to...' . "\n\n"; |
9 |
$template .= '<ul><li>Come up with good tags for the post,</li><li>Set the publish time to 08:00 tomorrow morning,</li><li>Change the slug to a SEO-friendly slug,</li><li>And delete this text, hehe.</li></ul>' . "\n\n"; |
10 |
$template .= 'Bye!'; |
11 |
return $template; |
12 |
} else |
13 |
return $content; |
14 |
}
|
15 |
|
16 |
// Example source: http://wpfilte.rs/the_editor_content/
|
17 |
|
18 |
?>
|
Ubah variabel $template
dengan apa pun yang Anda suka dan Anda siap menggunakannya!
Akhir Bagian Dua
Kami pergi melalui batch kedua 50 filter di artikel ini. Saya harap Anda menyukai dan belajar hal-hal baru darinya. Sampai jumpa di yang berikutnya!
Saya juga ingin mendengar pemikiran Anda. Apa pendapat Anda tentang filter-filter ini? Kirimkan komentar Anda di bawah ini; dan jika Anda menyukai artikelnya, jangan lupa untuk membagikannya!