【问题标题】:Woocommerce: How to update meta attribute value of all products programmaticallyWoocommerce:如何以编程方式更新所有产品的元属性值
【发布时间】:2020-09-01 20:14:48
【问题描述】:

我的产品上有一个元属性,可以这样访问:

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

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

【问题讨论】:

    标签: mysql wordpress woocommerce


    【解决方案1】:

    您可以创建一个插件并在其中放置一个函数,该函数贯穿您的产品并更新每个产品的元值。如果您不知道如何创建插件,这里有一个教程: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; 
    }
    

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

    这段代码应该很节省,因为它只更新帖子元,如果值为“否”,所以不应该有任何意外的帖子更新。


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

    【讨论】:

    • 谢谢!虽然@7ucif3r 的回答是最简单最简单的,但我还是给你竖起大拇指来回答你的麻烦。
    【解决方案2】:

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

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

    【讨论】:

    • 工作就像一个魅力!谢谢,我只是超级懒惰的 MYSQL xD
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2021-04-17
    • 2015-06-15
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多