@html_student
Молодой и глупый.

Как оборачивать каждый элемент в div WP?

Есть такая функция с регуляркой, которая оборачивает все блоки на фронте в div

public static function wrap_content_in_div($content)
    {
        if (is_single() && is_singular('post')) {
            // Определение регулярного выражения для обнаружения тегов, которые нужно обернуть

            $pattern = '/<(\b(?:h[1-6]|p|ul|ol)\b)([^>]*)>([\s\S]*?)<\/\1>/i';

            // Замена совпадений с использованием preg_replace_callback
            $content_with_wraps = preg_replace_callback($pattern, function ($matches) {
                $tag = $matches[1];
                $attributes = $matches[2];
                $inner_content = $matches[3];

                // Определение класса для обертки в зависимости от тега
                $wrapper_class = ($tag === 'p') ? 'wrap__padding' : (($tag === 'img') ? 'wrap__img' : 'wrap__full');


                // Формирование обертки и возвращение результата
                return "<div class='article__text $wrapper_class article__text_column article__holder'>$matches[0]</div>";
            }, $content);

            return $content_with_wraps;
        } else {
            return $content;
        }
    }

add_filter('the_content', [__CLASS__, 'wrap_content_in_div'], 100);


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

Точнее не совсем понимаю приоритет обработки шорткодов и и моей функции.
Моей функции я задал приоритет 100, она всё оборачивает как нужно. Но вот если вмешивается шорткод, то обертка начинается и внутри, хотелось бы чтоб только корневые блоки оборачивал в div
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Kypidon4ik
Фрилансер, Wordpress developer
Посмотрите в коде где у вас функция создания шорткода и ее приоритет, после этого просто укажите приоритет обертке раньше (ближе к 1). Скорее всего приоритет шорткода стоит 10.
PS На вашем месте я бы лучше шаблон переписал , делать регулярку чтоб он оборачивал все в div сомнительное занятие
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы