WordPress — PHP-код между вкладкой Shortcode

Я хочу вставить php-код между шорткодами табби.

Я использую плагин табби таб для просмотра вкладок и добавили этот код в мой шаблон темы:

<?php echo do_shortcode('[tabby title="Gallary Name"]
name content
[tabby title="Images"]

[tabbyending]'); ?>

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

    <?php echo do_shortcode('[tabby title="Gallary Name"]
name content
[tabby title="Images"]

<?php
$i = 0;
$images = get_field('vil_pics');
if( $images ): ?>
<div>
<ul>
<?php foreach( $images as $image ): ?>
<li<?php if ( $i % 3 == 0 ) echo ' class="break"' ?>>
<a href="<?php echo $image['url']; ?>">
<img src="<?php echo $image['sizes']['thumbnail']; ?>" alt="<?php echo $image['alt']; ?>" />
</a><p>.</p>
</li>
<?php endforeach; ?>
</ul></div>
<?php endif; ?>

[tabbyending]'); ?>

Этот код не работает, он показывает пустую страницу. Как я могу это исправить?

0

Решение

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

Опция 1: выводим все по порядку:

echo do_shortcode( '[tabby title="Gallery Name"] name content' );
echo do_shortcode( '[tabby title="Images"]' );

// your php code as-is
$i = 0;
$images = get_field('vil_pics');
if( $images ): ?>
<div>
<ul>
<?php foreach( $images as $image ):
$i++ ?>
<li<?php if ( $i % 3 == 0 ) echo ' class="break"' ?>>
<a href="<?php echo $image['url']; ?>">
<img src="<?php echo $image['sizes']['thumbnail']; ?>" alt="<?php echo $image['alt']; ?>" />
</a><p>.</p>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php endif;

echo do_shortcode( '[tabbyending]' );

или вариант 2: сохранить все в переменную и вывести все сразу:

$output = '';

$output .= '[tabby title="Gallery Name"] name content';
$output .= '[tabby title="Images"]';

$i = 0;
$images = get_field('vil_pics');
if ( $images ) {
$output .= '<div><ul>';
foreach( $images as $image ) {
$i++;
$li_class = ( $i % 3 == 0 ) ? ' class="break"' : '';

$output .= '<li' . $li_class . '>';
$output .= '<a href="' . $image['url'] . '">';
$output .= '<img src="' . $image['sizes']['thumbnail'] . '" alt="' . $image['alt'] . '" />';
$output .= '</a><p>.</p></li>';
}
$output .= '</div></ul>';
}

$output .= '[tabbyending]';

echo do_shortcode( $output );

Обратите внимание, что я не вижу ничего увеличивающегося $i поэтому я добавил это. Все остальное как есть.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector