Woocommerce:如何以编程方式更新所有产品的元属性值

时间:2020-05-15 21:41:47

标签: mysql wordpress woocommerce

我在我的产品上有一个元属性,可以通过以下方式对其进行访问:

get_post_meta( $product_id, '_disable_shipping', true );

我需要以编程方式更新MySQL上所有产品的_disable_shipping属性。有一个简单的方法吗?我想将我所有产品的所有值都更改为yes

2 个答案:

答案 0 :(得分:2)

您可以创建一个插件并在其中插入一个功能,该功能贯穿您的产品并更新每个产品的元值。如果您不知道如何创建插件,请参见以下教程:https://www.smashingmagazine.com/2011/09/how-to-create-a-wordpress-plugin/只需几分钟即可完成。

在执行批量操作更新产品之前,请确保已备份数据库。

该函数可能看起来像这样:

function disable_shipping_once(){

$products = get_posts(array('post_type' => 'product', 'numberposts' => -1) );

foreach($products as $product) :  


    $product_ID = $product->ID;
    $meta_value = get_post_meta($product_ID, '_disable_shipping',true);

    if($meta_value == "no") :

        update_post_meta($product_ID, '_disable_shipping-include', 'yes' );

    endif;

endforeach; 
}

如果激活插件,此功能将运行。之后,您可以再次停用它。

这段代码应该保存得很好,因为如果值是“ no”,它只会更新发布的元数据,因此不应有任何意外的更新。


也许还有一个用于批量编辑产品的插件。这是我发现的第一个似乎正在完成工作的工作,尚未经过测试:https://wordpress.org/plugins/custom-field-bulk-editor/

答案 1 :(得分:2)

您可以使用以下MYSQL查询,wp_postmeta取决于您的wordpress数据库前缀

UPDATE `wp_postmeta` SET `meta_value` = 'yes' WHERE `meta_key` = '_disable_shipping'