Хочу выводить thumbnails шорткодами. В контенте страницы пишу примерно так (конечно предварительно добавив обработку шорткодов в functions.php)
[thumbnail-list col="2"]
[thumbnail-row]
[thumbnail-item url="/category/events/" img="/wp-content/uploads/2016/12/ground-training.jpg" title="Соревнования, совместные выезды"]
[thumbnail-item url="/category/events/" img="/wp-content/uploads/2016/12/ground-training.jpg" title="Места полетов"]
[/thumbnail-row]
[/thumbnail-list]
чтобы получать такую разметку
На выходе получаю свою разметку + куча br и p тегов. Может кто знает как избавиться от этого именно м/у шорткодами и оставить в остальной части документа.
Рабочий вариант сейчас выглядит так[thumbnail-list col="2"][thumbnail-row][thumbnail-item url="/category/events/" img="/wp-content/uploads/2016/12/ground-training.jpg" title="Соревнования, совместные выезды"][thumbnail-item url="/category/events/" img="/wp-content/uploads/2016/12/ground-training.jpg" title="Места полетов"][/thumbnail-row][thumbnail-row][thumbnail-item url="/category/events/" img="/wp-content/uploads/2016/12/ground-training.jpg" title="Соревнования, совместные выезды"][thumbnail-item url="/category/events/" img="/wp-content/uploads/2016/12/ground-training.jpg" title="Места полетов"][/thumbnail-row][/thumbnail-list]
т.е все что выше только в одну строку, НО это же писец как плохо читаемо
Пробовал:
Добавлять в functions.php
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);
этот вариант работает, но как -то не на 100% - все равно добавляется один p тег во внутренний [thumbnail-item] шорткод
Полный листинг представленных шорткодов на всякий случай:/*
* Thumbnail list shortcode
*/
/*
* Wrap
*/
function thumbnail_list($atts, $shortcode_content = null)
{
$config = array
(
'col' => 2, // 3, 4
'tplWrap' => '<div class="thumbnail thumbnail_col_%1$s">%2$s</div>',
);
$config = shortcode_atts($config, $atts, 'thumbnail-list');
return sprintf($config['tplWrap'], $config['col'], do_shortcode($shortcode_content));
}
add_shortcode('thumbnail-list', 'thumbnail_list');
/*
* Row
*/
function thumbnail_row($atts, $shortcode_content = null)
{
$config = array
(
'tplRow' => '<div class="thumbnail__row">%s</div>'
);
$config = shortcode_atts($config, $atts, 'thumbnail-row');
return sprintf($config['tplRow'], do_shortcode($shortcode_content));
}
add_shortcode('thumbnail-row', 'thumbnail_row');
/*
* Item
*/
function thumbnail_item($atts, $shortcode_content = null)
{
$config = array
(
'url' => '#',
'img' => 'http://placehold.it/385x257',
'title' => 'Exemple title',
'tplItem' => '<div class="thumbnail__item"><a href="%1$s" class="thumb-item">%2$s</a></div>',
'tplImage' => '<div class="thumb-item__img"><img src="%s"></div>',
'tplTitle' => '<div class="thumb-item__title">%s</div>'
);
$config = shortcode_atts($config, $atts, 'thumbnail-row');
$chunkImage = sprintf($config['tplImage'], $config['img']);
$chunkTitle = sprintf($config['tplTitle'], $config['title']);
$chunkItem = sprintf($config['tplItem'], $config['url'], $chunkImage . $chunkTitle);
return $chunkItem;
}
add_shortcode('thumbnail-item', 'thumbnail_item');
Посоветуйте как быть, может вообще другой подход к решению таких задач есть?