Убрать лишнее из описаний товаров на всем сайте?

Ссылка скопирована
1 ответ

Как можно убрать лишние тэги из описаний товаров на всем сайте?
Это - <p>&nbsp;</p>
Копировал описания и там много лишних таких строк
spoiler

Убрать лишнее из описаний товаров на всем сайте?

Дополнительно:

Если они в базе, то можно запросом вырезать/пересохранить, либо просто в выводе вырезать

  • Дмитрий, Огромное спасибо! Убрал <div> </div>
    и <p> </p> выгрузив и загрузив базу.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ирина WP Ответ

    Если нужно массово убрать лишнее из описаний товаров, сначала сделайте бэкап базы. Описания WooCommerce лежат в таблице posts: полное описание — post_content, короткое — post_excerpt, тип записи — product. Но массовая SQL-замена по HTML легко ломает разметку, поэтому лучше начинать со скрипта и dry-run.

    Если нужно удалить конкретный повторяющийся фрагмент:

    UPDATE wp_posts
    SET post_content = REPLACE(post_content, 'Лишний текст', '')
    WHERE post_type = 'product';

    UPDATE wp_posts SET post_content = REPLACE(post_content, 'Лишний текст', '') WHERE post_type = 'product';

    Но безопаснее через WP-CLI:

    wp post list --post_type=product --format=ids

    wp post list --post_type=product --format=ids

    $products = get_posts([
        'post_type' =&gt; 'product',
        'posts_per_page' =&gt; -1,
        'fields' =&gt; 'ids',
    ]);
     
    foreach ($products as $product_id) {
        $content = get_post_field('post_content', $product_id);
        $new_content = str_replace('Лишний текст', '', $content);
     
        if ($new_content !== $content) {
            wp_update_post([
                'ID' =&gt; $product_id,
                'post_content' =&gt; $new_content,
            ]);
        }
    }

    $products = get_posts([ 'post_type' =&gt; 'product', 'posts_per_page' =&gt; -1, 'fields' =&gt; 'ids', ]); foreach ($products as $product_id) { $content = get_post_field('post_content', $product_id); $new_content = str_replace('Лишний текст', '', $content); if ($new_content !== $content) { wp_update_post([ 'ID' =&gt; $product_id, 'post_content' =&gt; $new_content, ]); } }

    Если «лишнее» — это блоки, шорткоды, мусорные стили, лучше сначала выгрузить несколько примеров и понять шаблон. Регулярками по HTML можно чистить только очень однотипные фрагменты.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно