Вы точно можете! В RichJenks есть короткая, но информативная статья о реализации этой функциональности, которая сводится к определению новой функции, которая может сказать вам, присутствует ли флаг (аргумент без связанного значения) в вашем массиве $atts
:
function is_flag( $flag, $atts ) {
foreach ( $atts as $key => $value )
if ( $value === $flag && is_int( $key ) ) return true;
return false;
}
После определения этой функции вы можете ссылаться на is_flag()
в своей функции шорткода, чтобы узнать, был ли установлен флаг как часть вызова шорткода:
if is_flag( 'some_att', $atts )
// flag is present
else
// flag is not present
К сожалению, приведенный вами пример не будет работать как значение аргумента с анализатором шорткода Wordpress. Согласно официальному Документация Wordpress по API шорткодов:
Attribute values must never contain the following characters:
- Square braces: [ ]
- Quotes: " '
Поскольку в вашем примере используется символ одинарной кавычки ('
), он официально не поддерживается механизмом синтаксического анализа шорткода.
В том смысле, что процессор шорткода примет его как действительный: ot должен, учитывая, что он больше не будет использовать какие-либо запрещенные символы. В смысле того, будет ли это работать для вашей текущей кодовой базы: невозможно сказать без дополнительной информации, выходящей за рамки этого вопроса.
Как мне получить качество и mp4 в шорткоде? Я могу получить путь только с помощью $ atts ['path']
@Toniq невозможно с уверенностью сказать, что вы могли бы использовать, не зная больше о решении в целом. В любом случае (как я уже упоминал), это, скорее всего, выходит за рамки этого вопроса, и вы, вероятно, получите лучшие ответы, если бы разбили его на другой вопрос с новым минимальным, полным и поддающимся проверке примером.
Это сработает? [foo path = "{качество: 720p, mp4: PATH_TO_MP4_VIDEO}"]. Могу я получить свои данные?