@GM回答の拡張(これが唯一の可能な方法です)として、ここに少し短縮/美化された拡張バージョン(個人的には好みです)があります。
短縮/美化バリアント
boolean
含まれている値をチェックするだけで十分です。の場合true
、結果はになり(bool) true
、そうでない場合はfalseになります。これにより、1つのケースが生成され、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)常に3番目の引数を渡します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
。