php - 在 Woocommerce 中批量删除产品变体图像

标签 php sql wordpress woocommerce product-variations

在 Woocommerce 中(我的例子是 3.5.1),是否可以删除所有特定于变体的图像,以便当用户在产品页面中选择变体时图像不会更改?

我想要这个

enter image description here

而不是那个

enter image description here 在整个网站中。

最佳答案

您可以使用 phpMyAdmin 进行直接 SQL 查询批量删除所有产品变体图像,例如(在备份数据库之前):

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 查询来删除所有变体图像(或者可选地仅删除相关的父变量产品 ID):

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();
    

    然后保存并浏览您网站的任何页面。完成后将其删除。


  • 对于一种特定的可变产品(假设可变产品 ID 72):

    remove_all_variations_images(72);
    

    然后保存并浏览您网站的任何页面。完成后将其删除。

  • 关于php - 在 Woocommerce 中批量删除产品变体图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53129464/

    相关文章:

    wordpress - WordPress 帖子的 URL 前缀

    php - MySQL多表连接

    php - PHP 的 mysql *server* 协议(protocol)实现

    php - 插入MySQL的问题

    java.lang.ClassCastException : org. hibernate.internal.SQLQueryImpl 无法转换为 java.util.List 如何修复

    SQL Server 批量插入 - 0 行受影响

    php - 使用 PHP 的数据表

    SQL存储过程执行计划性能不佳——参数嗅探

    WordPress wp_customize->add_control 中使用的 PHP foreach 循环

    mysql - 从 woocommerce 数据库中删除所有 sku