ในฐานะที่เป็นส่วนขยายของคำตอบ @GM (ซึ่งเป็นวิธีเดียวที่เป็นไปได้ในการทำเช่นนี้) นี่คือย่อ / สวยงามเล็กน้อยและเป็นรุ่นขยาย (ซึ่งฉันชอบเอง):
สั้นลง / ตัวแปรที่สวยงาม
มันเพียงพอที่จะทำการboolean
ตรวจสอบค่าที่มีอยู่ ถ้าเป็นtrue
เช่นนั้นผลลัพธ์จะเป็น(bool) true
เช่นนั้นมิฉะนั้นจะเป็นเท็จ สิ่งนี้ก่อให้เกิดกรณีเดียวtrue
ทุกอย่างเป็นfalse
ผล
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
ตัวแปรเพิ่มเติม / ปลอดภัยสำหรับผู้ใช้
เหตุผลที่ผมชอบรุ่นนี้ก็คือว่ามันจะช่วยให้ผู้ใช้สามารถพิมพ์ในเป็นชื่อแทนสำหรับon/yes/1
true
ซึ่งช่วยลดโอกาสสำหรับข้อผิดพลาดของผู้ใช้เมื่อผู้ใช้จำไม่ได้ว่ามูลค่าที่แท้จริงสำหรับการtrue
เป็น
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = filter_var( $args['boolAttr'], FILTER_VALIDATE_BOOLEAN );
}
หมายเหตุเพิ่มเติม:
1) shortcode_atts()
เสมอผ่านอาร์กิวเมนต์ที่ มิฉะนั้นตัวกรองคุณลักษณะรหัสย่อเป็นไปไม่ได้ที่จะกำหนดเป้าหมาย
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) extract()
การใช้งานไม่เคย แม้แต่แกนกลางต้องการลดการเรียกเหล่านั้น มันแย่กว่าglobal
ตัวแปรเท่า ๆ กันเนื่องจาก IDE ไม่มีโอกาสแก้ไขเนื้อหาที่แตกแล้วและจะส่งข้อความความล้มเหลว
false
true