Intereting Posts
Как отключить параметр выравнивания при выборе изображения? shortcode, который вводится в блог и появляется в боковой панели Попытка получить свойство не-объекта при использовании $ post-> post_parent Добавление массива `support` в пользовательский тип сообщения WordPress Включить вложения с пользовательской таксономией в поиске Как предотвратить перезапись домашней страницы по умолчанию на статическую страницу Толкот никогда не называется (странное поведение) Кто-нибудь пытался поставить PHP ActiveRecord на WordPress? Попытка получить свойство ошибки, отличной от объекта, используя get_post_meta () Замените аудио-ссылки на jplayer с помощью фильтра the_content Как перенаправить действие на пользовательскую страницу в разделе администратора Случайные изображения без дубликатов (галерея ACF) Белая пустая страница при обновлении и публикации страницы / публикации (разрешено) Создание пользовательской формы входа с помощью ajax (без плагина) Фоновое изображение сбрасывается после времени (XAMPP)

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

Как передать атрибут 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 */ }