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ó đủ để booleankiể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 falsekế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/1dướ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ự truelà 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 globalcá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.
falsenếu không, bạn sẽ cótrue.