Intereting Posts
Отфильтровать сообщения перед отображением категории Добавление поддержки пересмотра содержимого продукта WooCommerce Как отображать только сообщения, назначенные определенной, изолированной, подкатегории Разделение одного большого сайта WordPress на несколько небольших сайтов TinyMCE – добавить класс в OL – селектор, похоже, не получает родительский OL, UL, просто LI (4.6.3) Включить профиль автора в результаты поиска Я хочу, чтобы только мои подстраницы были доступны для навигации на панели навигации plugins_url () работает везде, но wp_reqister_script () Если опубликовано после даты Как добавить сообщение meta в цикл while? WP_Query и проблема полиланга Можно ли добавить дополнительный уровень управления версиями в номера версий версий wordpress для детей? Можно ли прикрепить фоновое изображение к div вместо тела? получить «больше» с пользовательским запросом БД, как с WP Query Использование настраиваемого поля вместо исходного поля заголовка, но только для пользовательского типа сообщения

Передача переменной во вложенных коротких кодах

Как передать атрибут style в [boxes] shortcode на [box] shortcodes без использования глобальных переменных? Я не хочу использовать глобальные переменные, потому что я видел несколько статей, в которых использование глобальных переменных является плохой практикой.

 [boxes style="style-one"] [box][/box] [box][/box] [box][/box] [box][/box] [/boxes] 

Solutions Collecting From Web of "Передача переменной во вложенных коротких кодах"

Если бы я собирался сделать что-то подобное, я бы на самом деле создал два коротких кода. Один для «ящиков» и один для «коробки» внутри. Я верю, что это единственный способ правдоподобно.

Когда вы создаете один для внешнего окна, просто убедитесь, что do_shortcode (); вокруг переменной содержимого. Если вы не используете do_shortcode (), вы не сможете использовать короткие коды [] внутри другого короткого кода.

 add_shortcode('boxes', 'shortcode_boxes'); add_shortcode('box', 'shortcode_box'); function shortcode_boxes($args, $content = null) { extract(shortcode_atts(array( 'style' => '' ), $args)); return '<section class="'. $style .'">'. do_shortcode($content) .'</section>'; } function shortcode_box($args, $content = null) { extract(shortcode_atts(array( 'id' => '' ), $args)); return '<article id="'. $id .'">'. do_shortcode($content) .'</article>'; } 

Это делается в HTML5, но вы можете просто изменить статью и раздел в div, и все будет в порядке.

Применение:

 [boxes class="blue"] [box id="one"]content[/box] [box id="two"]content[/box] [/boxes] 

Вы захотите использовать текстовую версию в редакторе вместо Visual, если у вас нет фильтра перезаписи для исправления пробелов / p / br. Если нет, вам придется использовать

 [boxes style="blue"] [box id="one"] content [/box] [box id="two"] content [/box] [/boxes] 

Сообщите мне, есть ли у вас какие-либо проблемы, вопросы или проблемы.

—Редактировать—

Заменен стиль классом:

 <section class="'. $style .'"> 

Класс должен быть установлен в вашем стиле.css, в этом примере – синем.

 .blue { /* class style */ }