Come estensione alla risposta di @GM (che è l'unico modo possibile per farlo), ecco una versione leggermente abbreviata / abbellita e una versione estesa (che preferisco personalmente):
Variante abbreviata / abbellita
È sufficiente fare un boolean
controllo per il valore contenuto. Se lo è true
, il risultato sarà (bool) true
, altrimenti sarà falso. Questo produce un caso true
, tutto il resto false
risulta.
add_shortcode( 'shortcodeWPSE', 'wpse119294ShortcodeCbA' );
function wpse119294ShortcodeCbA( $atts ) {
$args = shortcode_atts( array(
'boolAttr' => 'true'
), $atts, 'shortcodeWPSE' );
$args['boolAttr'] = 'true' === $args['boolAttr'];
}
Variante estesa / sicura per l'utente
Il motivo per cui preferisco questa versione è che consente all'utente di digitare on/yes/1
come alias per true
. Ciò riduce la possibilità di errori dell'utente quando l'utente non ricorda quale fosse il valore effettivo 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 );
}
Note aggiuntive:
1) Passa sempre il terzo argomento per shortcode_atts()
. Altrimenti il filtro degli attributi dello shortcode è impossibile da targetare.
// The var in the filter name refers to the 3rd argument.
apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
2) Non usare mai extract()
. Anche il core vuole ridurre quelle chiamate. È altrettanto peggio per le global
variabili, poiché gli IDE non hanno la possibilità di risolvere i contenuti estratti e genereranno messaggi di errore.
false
, altrimentitrue
.