В шорткодах WordPress как передать логические атрибуты?
Оба [shortcode boolean_attribute="true"]
или [shortcode boolean_attribute=true]
дают строковые значения.
РЕДАКТИРОВАТЬ
Не будет проблем для пользователей, которые знают, что делают, если я использую трюк, который прокомментировал @brasofilo. Но некоторые пользователи будут потеряны, если они дадут false
значение атрибута и получат true
значение. Так есть ли другое решение?
shortcode
customization
Содбилег Гансух
источник
источник
false
, в противном случаеtrue
.Ответы:
Прост в использовании
0
и1
значения, а затем приведение типов внутри функции:[shortcode boolean_attribute='1']
или[shortcode boolean_attribute='0']
но если вы хотите, вы также можете строго проверить
'false'
и присвоить его логическому значению, таким образом вы также можете использовать:[shortcode boolean_attribute='false']
или[shortcode boolean_attribute='true']
Потом:
источник
extract()
. :)'true'
и'false'
В качестве дополнения к ответу @GM (который является единственным возможным способом сделать это), вот немного укороченная / украшенная и расширенная версия (которую я лично предпочитаю):
Укороченный / украшенный вариант
Для этого достаточно
boolean
проверить наличие содержимого. Если это такtrue
, результат будет(bool) true
, иначе он будет ложным. Это приводит к одному случаюtrue
, все остальное -false
результат.Расширенный / безопасный для пользователя вариант
Причина, по которой я предпочитаю эту версию, заключается в том, что она позволяет пользователю вводить
on/yes/1
псевдоним дляtrue
. Это уменьшает вероятность ошибок пользователя, когда пользователь не помнит, каково было фактическое значениеtrue
.Дополнительные замечания:
1) Всегда передавайте третий аргумент для
shortcode_atts()
. В противном случае фильтр атрибутов шорткода невозможно нацелить.2) Никогда не используйте
extract()
. Даже ядро хочет уменьшить эти звонки. В равной степени хуже дляglobal
переменных, так как у IDE нет шансов разрешить извлеченное содержимое и будут выдаваться сообщения об ошибках.источник
wp_validate_boolean()
Функция в WordPress 4.0.0 или выше полезна при проверке логических значений. Справочник по функциям developer.wordpress.org/reference/functions/wp_validate_booleanfilter_var( $var, FILTER_VALIDATE_BOOLEAN ).
, о чем заявляет даже докблок этой функции.Вот более короткая простая версия, основанная на ответе gmazzap:
Используйте '1' или '0', затем применяйте двойной удар "!!" который изменяет значение "истина / фальси" на его логический эквивалент
обратите внимание, что это НЕ будет работать со строками «истина» и «ложь», только «1» и «0»
источник