@GM cevabının bir uzantısı olarak (bunu yapmanın tek olası yolu), burada biraz kısaltılmış / güzelleştirilmiş ve genişletilmiş bir versiyon (kişisel olarak tercih ederim):
Kısaltılmış / Güzelleştirilmiş varyant
boolean
İçerilen değer için bir kontrol yapmak yeterlidir . Eğer öyleyse true
, sonuç olur (bool) true
, yoksa yanlış olur. Bu bir vaka üretir true
, her şey false
sonuçlanır.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Genişletilmiş / Kullanıcı güvenli varyant
Bu sürümü tercih etmemin nedeni, kullanıcının on/yes/1
bir takma ad olarak yazmasına izin vermesidir true
. Bu, kullanıcı gerçek değerinin ne olduğunu hatırlamadığında kullanıcı hatası olasılığını azaltır 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 );
}
Ek Notlar:
1) Her zaman için 3. argümanını iletin shortcode_atts()
. Başka kısa kod öznitelikleri filtresini hedeflemek imkansızdır.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Asla kullanmayın extract()
. Çekirdek bile bu çağrıları azaltmak istiyor. global
IDE'ler çıkarılan içeriği çözme şansına sahip olmadığından ve hata mesajlarını atacağından, değişkenler için aynı derecede daha kötüdür .
false
, aksi takdirde sahip olacaksınıztrue
.