Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Sử dụng filter sửa thuộc tính shortcode

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

Thứ Năm, 14/08/2014 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

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 muốn can thiệp trực tiếp vào mã của plugin của shortcode này. Vậy phải làm thế nào? Đây là ước mơ của những ai viết code, rất muốn thuận tiện khi nâng cấp plugin hay loại bỏ tính năng cài thêm vào 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 thuộc tính 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 khi 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 thuộc tính của shortcode estfilter ngay bây giờ. Bằng cách thiết lập lại thuộc tính 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 để 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 thuộc tính mặc định và thuộc tính của người dùng.
  • $pairs: giá trị thuộc tính mặc định của shortcode.
  • $atts: giá trị thuộc tính 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 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ư ở trên mình đã khai báo. Nếu shortcode của bạn không 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ó thể thay đổi kết quả trả về của shortcode mà không cầ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 vời 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.

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Wordpress Tìm kiếm: Wordpress shortcode

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.