Tindakan & Filter
Cara terbaik imho adalah menggunakan tindakan untuk membawa fungsi plugin ke dalam tema.
Contoh 1
Ini ada sedikit plugin untuk menguji ini.
<?php
/** Plugin Name: (#68117) Print Hello! */
function wpse68117_print_hello()
{
echo "Hello World!";
}
add_action( 'wpse68117_say', 'wpse68117_print_hello' );
Di dalam tema:
<?php
/** Template Name: Test »Print Hello!« Plugin */
get_header();
// Now we call the plugins hook
do_action( 'wpse68117_say' );
Apa yang sekarang terjadi / Anak kool
Dengan cara ini kita tidak perlu memeriksa keberadaan fungsi, file, kelas, metode, atau bahkan global (jangan lakukan ini!) $variable
. WP intern global sudah mengambil ini untuk kita: Ini memeriksa apakah nama hook adalah filter saat ini dan melampirkannya. Jika tidak ada, tidak ada yang terjadi.
Contoh # 2
Dengan plugin kami berikutnya, kami melampirkan fungsi panggilan balik yang mengambil satu argumen.
<?php
/** Plugin Name: (#68117) Print Thing! */
function wpse68117_print_thing_cb( $thing )
{
return "Hello {$thing}!";
}
add_filter( 'wpse68117_say_thing', 'wpse68117_print_thing_cb' );
Di dalam tema:
<?php
/** Template Name: Test »Print Thing!« Plugin */
get_header();
// Now we call the plugins hook
echo apply_filter( 'wpse68117_say_thing', 'World' );
Kali ini, kami menawarkan pengguna / pengembang kemungkinan untuk menambahkan argumen. Dia bisa echo/print
output, atau bahkan memprosesnya lebih lanjut (jika Anda mendapat array sebagai balasan).
Contoh # 3
Dengan plugin ketiga, kami melampirkan fungsi panggilan balik yang membutuhkan dua argumen.
<?php
/** Plugin Name: (#68117) Print Alot! */
function wpse68117_alot_cb( $thing, $belongs = 'is mine' )
{
return "Hello! The {$thing} {$belongs}";
}
add_filter( 'wpse68117_grab_it', 'wpse68117_alot_cb' );
Di dalam tema:
<?php
/** Template Name: Test »Print Alot!« Plugin */
get_header();
// Now we call the plugins hook
$string_arr = implode(
" "
,apply_filter( 'wpse68117_grab_it', 'World', 'is yours' )
);
foreach ( $string_arr as $part )
{
// Highlight the $thing
if ( strstr( 'World', $part )
{
echo "<mark>{$part} </mark>";
continue;
}
echo "{$part} ";
}
Plugin ini sekarang memungkinkan kita untuk memasukkan dua argumen. Kita dapat menyimpannya ke dalam $variable
dan memprosesnya lebih lanjut.
Kesimpulan
Dengan menggunakan filter dan tindakan, Anda memberikan kinerja yang lebih baik dengan menghindari pemeriksaan yang tidak perlu (bandingkan kecepatan function_*/class_*/method_*/file_exists
atau pencarian global dengan in_array()
pencarian filter ~ 1k (?)). Anda juga menghindari memiliki semua Pemberitahuan yang tidak perlu itu untuk tidak mengatur variabel, dll., Karena plugin peduli tentang ini.