Sử dụng filter sửa thuộc tính shortcode

Quảng cáo
Ads_ngang
Website dinhthuanit.com có bài Sử dụng filter sửa thuộc tính shortcode

Trong các bài trước, chúng ta đã học được cách tạo shortcode trong wordpress, sử dụng các hàm wordpress. Trong trường hợp, bạn muốn thay đổi cách sử lý mặc định của code shortcode tạo ra trước đó, mà không thích can thiệp trực diện vào mã của plugin của shortcode này. Vậy nên làm thế nào? Đây là tham vọng của những ai viết code, rất muốn thuận lợi khi nâng cấp plugin hay loại bỏ tính năng cài thêm nữa một tính năng sẵn có.

Sửa thuộc tính shortcode trong wordpress

WordPress có cung cấp filter tiện ích cho shortcode, giúp bạn dễ dàng sửa lại tính chất của shortcode. Mình sẽ tạo một shortcode đơn giản để minh hoạt cho bài này.

   function   simple_shortcode  (    $atts    )     {       $pairs    =    array    (    'name'    =>     'Mr.Hoang'    ,    'age'    =>     '24'    )    ;       extract    (  shortcode_atts  (    $pairs    ,    $atts    ,    'testfilter'    )    )    ;       echo     $name    .    '-'    .    $age    ;     }     add_shortcode  (     'testfilter'    ,     'simple_shortcode'     )    ;   

Gọi shortcode này, bạn sẽ nhận kết quả: “Mr.Hoang-24”.

Mỗi một shortcode trước lúc thực thi đều sử lý filter tương ứng với shortcode đó, tên filter này có dạng shortcode_atts_{$shortcode} . Thay {$shortcode} là tên của shortcode. Chúng ta sẽ can thiệp vào các tính chất của shortcode estfilter ngay bây giờ. Bằng cách thiết lập lại tính chất của shortcode, dữ liệu và kết quả trả về của nó sẽ bị thay đổi. Điều này hiển nhiên đúng theo logic, vì khi tạo ra một shortcode tốt sẽ luôn dùng thuộc tính được truyền vào bởi người dùng làm sử lý dữ liệu.

Ví dụ chèn shortcode trên vào post/page.

   [  testfilter name  =    "Q.Huy"   age  =    "25"    ]   

Kết quả sẽ print ra chuỗi “Q.Huy-25”

Sử dụng filter shortcode

Thêm filter cho shortcode “testfilter” như sau:

 add_filter  (    'shortcode_atts_testfilter'    ,    'filter_sc'    ,    10    ,    3    )    ;       function   filter_sc  (    $out    ,     $pairs    ,     $atts    )    {       if    (    $out    [    'age'    ]    >     22    )     $out    [    'name'    ]    =    'Khanh'    ;     else     $out    [    'age'    ]     =     '21'    ;         return     $out    ;       }   

Mỗi lần sử dụng (gọi) shortcode là một lần chạy filter này. Filter có 3 tham số.

  • $out : giá trị thuộc tính cuối cùng cho shortcode, là kết quả giữa tính chất mặc định và tính chất của người dùng.
  • $pairs : giá trị tính chất mặc định của shortcode.
  • $atts : giá trị tính chất cung cấp bởi người dùng.

Nếu mình gọi:

   [  testfilter name  =    "A"   age  =    "20"    ]     [  testfilter name  =    "B"    ]   

Trước khi sửa bởi filter shortcode, bạn sẽ thấy 3 tham số có giá trị tương ứng là:
Lần gọi 1
$out: array("name"=> "A","age"=> "20")
$pairs: array("name"=> "Mr.Hoang","age"=> "24")
$atts: array("name"=> "A","age"=> "20")
Lần gọi 2 :
$out: array("name"=> "B","age"=> "24")
$pairs: array("name"=> "Mr.Hoang","age"=> "24")
$atts: array("name"=> "B","age"=> "24")

Sau khi sử dụng filter shortcode_atts_{$shortcode} , kết quả có thay đổi:
Lần gọi 1
$out: array("name"=> "A","age"=> "21")
$pairs: array("name"=> "Mr.Hoang","age"=> "24")
$atts: array("name"=> "A","age"=> "20")
Lần gọi 2 :
$out: array("name"=> "Khanh","age"=> "24")
$pairs: array("name"=> "Mr.Hoang","age"=> "24")
$atts: array("name"=> "B","age"=> "24")

Lưu ý tính năng filter shortcode được chỉ định do hàm shortcode_atts . Trong khi định nghĩa shortcode, nếu bạn muốn bật tính năng filter cho shortcode đó thì khai báo vào tên shortcode vào tham số thứ 3 của hàm này, giống như phía trên tôi đã khai báo. Nếu shortcode của bạn cấm dùng đến hàm shortcode_atts hoặc không kích hoạt tính năng filter thì cũng vô tác dụng.

Rõ ràng sử dụng filter shortcode, đã cũng có thể có thể thay đổi kết quả trả về của shortcode mà chẳng luôn phải chỉnh sửa lại code đăng ký shortcode cho vất vả và gây khó bảo trì cho web về sau. Thật tuyệt hảo phải không.

Hi vọng bài viết này, sẽ giúp ích cho bạn. Nếu thích bài này hãy để lại comment và ấn like nhóe.

Để thu được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng cũng đều có thể thu được sự trợ giúp trên Twitter và Facebook

Bài viết Sử dụng filter sửa thuộc tính shortcode được tổng hợp và biên tập bởi: dinhthuanit.com. Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho dinhthuanit.com để điều chỉnh. dinhthuanit.com xin cảm ơn.

Bài Viết Liên Quan


Bài Viết Khác


Quảng cáo
Ads_ngang