Là một phần mở rộng cho câu trả lời @GM (đây là cách khả thi duy nhất để làm điều này), đây là một phiên bản rút gọn / làm đẹp và một phiên bản mở rộng (mà cá nhân tôi thích):
Biến thể rút gọn / làm đẹp
Nó đủ để boolean
kiểm tra giá trị chứa. Nếu nó true
, kết quả sẽ là (bool) true
, nếu không nó sẽ là sai. Điều này tạo ra một trường hợp true
, tất cả mọi thứ khác false
kết quả.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Biến thể mở rộng / an toàn cho người dùng
Lý do tại sao tôi thích phiên bản này là vì nó cho phép người dùng nhập vào on/yes/1
dưới dạng bí danh true
. Điều này làm giảm cơ hội lỗi người dùng khi người dùng không nhớ giá trị thực sự true
là bao nhiêu.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = filter_var( $args['boolAttr'], FILTER_VALIDATE_BOOLEAN );
}
Ghi chú bổ sung:
1) Luôn vượt qua đối số thứ 3 cho shortcode_atts()
. Khác bộ lọc thuộc tính shortcode là không thể nhắm mục tiêu.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Không bao giờ sử dụng extract()
. Ngay cả cốt lõi muốn giảm những cuộc gọi đó. Điều đó cũng tệ hơn đối với global
các biến, vì các IDE không có cơ hội giải quyết các nội dung được trích xuất và sẽ ném các thông báo lỗi.
false
nếu không, bạn sẽ cótrue
.