Задать вопрос
@maxnrg33
верстальщик

Свой класс элементам the_content()?

Вывожу через the_content() какой-то текст. Как спискам ul присвоить свой класс? например .list2
  • Вопрос задан
  • 1225 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Например, так
add_filter( 'the_content', 'my_the_content' );
 
function my_the_content( $content ) {
    return str_replace('<ul', '<ul class="list2"', $content);
}


Но, помоему, проще обернуть контент
<div class="content">
    <?php the_content(); ?>
</div>

.content ul {
    /* стили */
}
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. Хукаетесь в фильтр the_content
add_filter( 'the_content', 'add_class_to_list' );
2. Фильтруете контент и добавляете класс:
function add_class_to_list( $content ) {

    // тут выполняете манипуляции на $content

    return $content;
}


Есть три базовых варианта как выполнять эти "манипуляции":

2.1 Заменой подстроки
2.2 Полноценной работой с DOM
2.3 Регулярными выражениями

Далее привожу первые два варианта, по порядку:

// 2.1 - Заменой подстроки
function add_class_to_list( $content ) {

    // Находим <ul> и меняем на <ul class="list2">
    $content = str_replace( '<ul>', '<ul class="list2">', $content );

    return $content;
}
add_filter( 'the_content', 'add_class_to_list' );

// 2.2 - Работой с DOM
function add_class_to_list( $content ) {

    $doc = new DOMDocument();

    // далее все необходимые манипуляции, подробности работы с DOMDocument - в документации:
    // http://php.net/manual/en/class.domdocument.php

    return $content;
}
add_filter( 'the_content', 'add_class_to_list' );


DOMDocument полезен, когда нужно выполнять больше работы - оборачивать в дивы и тд. Регулярки бывают полезны если надо поймать вариативные данные, которые невозможно захватить с помощью str_replace.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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