Intereting Posts
Создание родительского каталога, доступного для записи сервером Добавить настраиваемое поле для автора и списка авторов списка в этом поле Добавить страницу подменю в меню «Пользователи» как дать пользователю роль? Преобразование ограниченных html в комментариях к bbcode Пользовательский тип сообщения, добавленный в меню, не будет отображаться во внешнем интерфейсе истекает через x дней CSS класс на последнем посту в цикле (пользовательский запрос) Проблема с выпуском новой строки TinyMce Chrome Развертывание предварительно настроенной базы данных Добавление класса body с ACF Создание опции, позволяющей пользователю выбрать страницу, на которой будет отображаться мой контент плагина Как я могу отображать и вычитать все страницы с мета-ключами и meta_value на index.php? как я могу добавить класс css на текущей странице в wordpress wp_nav_menu Как использовать встроенный SVG в WordPress

Эхо HTML в пользовательском коротком коде

Я написал короткий код, который я пытаюсь уточнить. Он просто получает список закладок и печатает их. Но мне нужно добавить HTML вокруг него в зависимости от типа, который определен.

extract(shortcode_atts(array('cat' => '', 'type' => ''), $atts)); $bookmarks = get_bookmarks( array( 'orderby' => 'name', 'order' => 'ASC', 'category' => $cat )); if (is_single()){ if($type == 'audio'){echo '<div class="sub-audio"><h6 class="sub_btn">Audio</h6>';} if($type == 'video'){echo '<div class="sub-video"><h6 class="sub_btn">Video</h6>';} foreach ( $bookmarks as $bookmark ) { printf( '<a class="wpb_button_a" href="%s"><span class="wpb_button wpb_%s wpb_default2"><i class="icon-%s"> </i>%s</span></a>', $bookmark->link_url, $bookmark->link_name, $bookmark->link_name, $bookmark->link_name ); } echo '</div>'; } 

Поэтому в зависимости от того, определяю ли я тип аудио или видео, он должен выводить HTML в соответствии с типом. Но я не уверен, почему это не работает.

Любая помощь будет оценена по достоинству.

Благодарю.

Я не знаю, что означает «это не работает», но короткий код не должен echo ничего. Вы должны конкатенировать строку и return ее.

 if (is_single()){ $str = ''; if($type == 'audio'){ $str .= '<div class="sub-audio"><h6 class="sub_btn">Audio</h6>'; } if($type == 'video'){ $str .= '<div class="sub-video"><h6 class="sub_btn">Video</h6>'; } foreach ( $bookmarks as $bookmark ) { $str .= sprintf( '<a class="wpb_button_a" href="%s"><span class="wpb_button wpb_%s wpb_default2"><i class="icon-%s"> </i>%s</span></a>', $bookmark->link_url, $bookmark->link_name, $bookmark->link_name, $bookmark->link_name ); } $str .= '</div>'; } return $str; 

Я не вижу ничего другого, очевидно, неправильного, хотя код, который вы опубликовали, является неполным, поэтому я предполагаю, что это проблема.