В WordPress при выводе постов вставляются лишние теги

Вот код вывода постов

 <?php
    $ids = get_field( 'news_thumbs');
    $news_count = get_field( 'news_count');
    $paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
    $query = new WP_Query( [
    'post_type' => 'news',
    'posts_per_page' => $news_count,
    'post__in' => $ids,
    'paged' => $paged,
    'orderby' => 'post__in',
    'order' => 'ASC'
    ]);

    if ( $query->have_posts() ) {?>
        <div class="news_thumbnails">
        <? while ( $query->have_posts() ) : $query->the_post();
            $service_title = get_field('news_card_title');
            $newsDescript = get_field('news_descript');
            $news_miniature = get_field('news_miniature');
            $news_date = get_field('news_date');
            if(!empty($news_date)) {
                $newsDate = $news_date;
            } else {
                $newsDate = get_the_time('d.m.Y');
            }
        ?>
            <div class="news_thumb animate fadeInUp">
                <div class="img_box_wrapp_2">
                    <div class="date">
                        <p><? echo $newsDate; ?></p>
                    </div>
                    <div class="img_box">
                        <? echo wp_get_attachment_image( $news_miniature, 'news' ); ?>
                    </div>
                </div>
                <div class="news_thumb_descript">
                    <h3><? echo $service_title; ?></h3>
                    <div class="p_wrapp_thumb">
                        <? echo $newsDescript; ?>
                    </div>
                </div>
                <div class="news_thumb_footer">
                    <a href="<?php the_permalink(); ?>" class="more_link">Подробнее</a>
                </div>
            </div>
        <?
            endwhile;
        ?></div><?
            wp_reset_postdata();
        ?>
        <?} else {?>
        <h3>У вас нет новостей</h3>
        <? } ?>

Некоторые карточки он выводит так

введите сюда описание изображения

Какие-то он выводит так

введите сюда описание изображения

То есть видно что он в некоторых карточек в .p_wrapp_thumb вставляет лишний .news_thumb_descript. Как сделать так чтобы в .p_wrapp_thumb не вставлялся .news_thumb_descript ?


Ответы (2 шт):

Автор решения: Denis

Нашел такой вот выход с помощью JQuery

$('.news_thumb').each(function() {
   pWrapp = $(this).find(".p_wrapp_thumb");
   if(pWrapp.find(".news_thumb_descript").length > 0) {
      pWrapp.find("p").unwrap();
   }
});
→ Ссылка
Автор решения: Simon

Раз уж на то пошло и Вы решили очистить при помощи jQuery вашу строку, я бы Вам предложил сделать это при помощи уже имеющихся средств WordPress, а именно wp_kses() или wp_kses_post() (в wp_kses() вы указываете разрешенные теги и их атрибуты в качестве параметра, а wp_kses_post() оставляет HTML теги разрешенные для публикации в записи для текущего пользователя, в вашем случае должно оставить просто div и уберет атрибут class). Например:

<div class="news_thumb animate fadeInUp">
    <div class="img_box_wrapp_2">
        <div class="date">
            <p><?php echo $newsDate; ?></p>
        </div>
        <div class="img_box">
            <?php echo wp_get_attachment_image( $news_miniature, 'news' ); ?>
        </div>
    </div>
    <div class="news_thumb_descript">
        <h3><?php echo $service_title; ?></h3>
        <div class="p_wrapp_thumb">
            <?php // В качестве второго параметра передается список допустимых HTML элементов в переданном контенте. https://wp-kama.ru/function/wp_kses
            <?php echo wp_kses( $newsDescript, [
                'p' => [] // в данном случае я Вам оставил только тег <p>
            ] ); ?>
        </div>
    </div>
    <div class="news_thumb_footer">
        <a href="<?php the_permalink(); ?>" class="more_link"><?php esc_html_e( 'Подробнее' ); ?></a>
    </div>
</div>
→ Ссылка