@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()。コアでさえ、これらの呼び出しを減らしたいと考えています。globalIDEは抽出されたコンテンツを解決する機会がなく、失敗メッセージをスローするため、変数に対しても同様に悪いです。
falseそれ以外の場合は、true。