Hành động & Bộ lọc
Cách tốt nhất của imho là sử dụng một hành động để đưa các chức năng của plugin vào các chủ đề.
Ví dụ 1
Đây là một plugin nhỏ để kiểm tra điều này.
<?php
/** Plugin Name: (#68117) Print Hello! */
function wpse68117_print_hello()
{
echo "Hello World!";
}
add_action( 'wpse68117_say', 'wpse68117_print_hello' );
Bên trong chủ đề:
<?php
/** Template Name: Test »Print Hello!« Plugin */
get_header();
// Now we call the plugins hook
do_action( 'wpse68117_say' );
Chuyện gì đang xảy ra / Đứa trẻ kool
Bằng cách này, chúng ta không phải kiểm tra sự tồn tại của một hàm, một tệp, một lớp, một phương thức hoặc thậm chí là toàn cầu (không làm điều này!) $variable
. WP intern toàn cầu đã thực hiện điều này cho chúng tôi: Nó kiểm tra xem tên hook có phải là bộ lọc hiện tại không và có gắn nó không. Nếu nó không tồn tại, không có gì xảy ra.
Ví dụ # 2
Với plugin tiếp theo của chúng tôi, chúng tôi sẽ đính kèm một hàm gọi lại có một đối số.
<?php
/** Plugin Name: (#68117) Print Thing! */
function wpse68117_print_thing_cb( $thing )
{
return "Hello {$thing}!";
}
add_filter( 'wpse68117_say_thing', 'wpse68117_print_thing_cb' );
Bên trong chủ đề:
<?php
/** Template Name: Test »Print Thing!« Plugin */
get_header();
// Now we call the plugins hook
echo apply_filter( 'wpse68117_say_thing', 'World' );
Lần này, chúng tôi cung cấp cho người dùng / nhà phát triển khả năng thêm một đối số. Anh ta có thể echo/print
đầu ra, hoặc thậm chí xử lý nó thêm (trong trường hợp bạn có một mảng đổi lại).
Ví dụ # 3
Với plugin thứ ba, chúng tôi sẽ đính kèm một hàm gọi lại có hai đối số.
<?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' );
Bên trong chủ đề:
<?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 này hiện cho phép chúng ta chèn hai đối số. Chúng ta có thể lưu nó vào $variable
và xử lý thêm.
Phần kết luận
Với việc sử dụng các bộ lọc và hành động, bạn sẽ mang lại hiệu suất tốt hơn bằng cách tránh các kiểm tra không cần thiết (so sánh tốc độ function_*/class_*/method_*/file_exists
hoặc tìm kiếm toàn cầu với in_array()
các tìm kiếm bộ lọc ~ 1k (?)). Bạn cũng tránh có tất cả những Thông báo không cần thiết cho việc không đặt biến, v.v., vì plugin quan tâm đến điều này.