Задать вопрос
dmitrykaryakin
@dmitrykaryakin
Верстальщик - Программист - Дизайнер

Как убрать и p и br теги внутри шорткода?

Хочу выводить 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]


чтобы получать такую разметку

2016-12-21-8c20g1

На выходе получаю свою разметку + куча 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');


Посоветуйте как быть, может вообще другой подход к решению таких задач есть?
  • Вопрос задан
  • 277 просмотров
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы