Як розширення до відповіді @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) Завжди передайте 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
.