Массовое удаление вариаций изображений товаров в Woocommerce - PullRequest
0 голосов
/ 03 ноября 2018

в Woocommerce (3.5.1 в моем случае), возможно ли удалить все изображения, зависящие от варианта, чтобы изображение не менялось, когда пользователь выбирает вариант на странице продукта?

Я хочу это

enter image description here

вместо этого

enter image description here на всем сайте.

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете массово удалить все изображения вариаций продукта, выполнив прямой SQL-запрос, используя phpMyAdmin, например (перед резервным копированием базы данных) :

UPDATE wp_postmeta as pm
JOIN wp_posts AS p ON pm.post_id = p.ID
SET pm.meta_value = ''
WHERE p.post_status = 'publish'
AND p.post_type = 'product_variation'
AND pm.meta_key = '_thumbnail_id'

Или вы можете использовать этот легкий запрос SQL во встроенной пользовательской функции, чтобы удалить все изображения вариантов (или опционально только для идентификатора продукта связанной родительской переменной) :

function remove_all_variations_images( $parent_id = 0 ){
    global $wpdb;

    $one_parent = $parent_id === 0 ? "" : "AND p.post_parent = $parent_id";

    return $wpdb->query("
        UPDATE {$wpdb->prefix}postmeta as pm
        JOIN {$wpdb->prefix}posts AS p ON pm.post_id = p.ID
        SET pm.meta_value = ''
        WHERE p.post_status = 'publish'
        AND p.post_type = 'product_variation'
        AND pm.meta_key = '_thumbnail_id' 
        $one_parent
    ");
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).

ИСПОЛЬЗОВАНИЕ (перед резервным копированием базы данных) :

  1. Для всех вариантов изображений вы добавите их в файл function.php:

    remove_all_variations_images();
    

    Затем сохраните и просмотрите любую страницу вашего сайта. Затем удалите его, как только закончите.


  1. Для одного конкретного переменного продукта (скажем, с переменным идентификатором продукта 72):

    remove_all_variations_images(72);
    

    Затем сохраните и просмотрите любую страницу вашего сайта. Затем удалите его, как только закончите.

...