Атрибуты шорткода без значений и со специальными символами

  1. Могут ли шорткоды Wordpress иметь атрибуты без таких значений?

    [foo some_att]
    

    Знаю, может быть так:

    [foo some_att = ""]
    
  2. Могу ли я иметь такие значения шорткода (с фигурными скобками)?

    [foo path = "{'quality': '720p', 'mp4': 'PATH_TO_MP4_VIDEO'}"]
    
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
0
286
1

Ответы 1

  1. Вы точно можете! В 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
    
  2. К сожалению, приведенный вами пример не будет работать как значение аргумента с анализатором шорткода Wordpress. Согласно официальному Документация Wordpress по API шорткодов:

    Attribute values must never contain the following characters:

    • Square braces: [ ]
    • Quotes: " '

    Поскольку в вашем примере используется символ одинарной кавычки ('), он официально не поддерживается механизмом синтаксического анализа шорткода.

Это сработает? [foo path = "{качество: 720p, mp4: PATH_TO_MP4_VIDEO}"]. Могу я получить свои данные?

Toniq 25.08.2018 00:38

В том смысле, что процессор шорткода примет его как действительный: ot должен, учитывая, что он больше не будет использовать какие-либо запрещенные символы. В смысле того, будет ли это работать для вашей текущей кодовой базы: невозможно сказать без дополнительной информации, выходящей за рамки этого вопроса.

esqew 25.08.2018 00:55

Как мне получить качество и mp4 в шорткоде? Я могу получить путь только с помощью $ atts ['path']

Toniq 25.08.2018 02:34

@Toniq невозможно с уверенностью сказать, что вы могли бы использовать, не зная больше о решении в целом. В любом случае (как я уже упоминал), это, скорее всего, выходит за рамки этого вопроса, и вы, вероятно, получите лучшие ответы, если бы разбили его на другой вопрос с новым минимальным, полным и поддающимся проверке примером.

esqew 26.08.2018 16:42

Другие вопросы по теме