【发布时间】:2020-09-01 20:14:48
【问题描述】:
我的产品上有一个元属性,可以这样访问:
get_post_meta( $product_id, '_disable_shipping', true );
我需要更新 MySQL 上所有产品的 _disable_shipping 属性或以编程方式。有没有简单的方法呢?我想将我所有产品的所有值更改为 yes。
【问题讨论】:
标签: mysql wordpress woocommerce
我的产品上有一个元属性,可以这样访问:
get_post_meta( $product_id, '_disable_shipping', true );
我需要更新 MySQL 上所有产品的 _disable_shipping 属性或以编程方式。有没有简单的方法呢?我想将我所有产品的所有值更改为 yes。
【问题讨论】:
标签: mysql wordpress woocommerce
您可以创建一个插件并在其中放置一个函数,该函数贯穿您的产品并更新每个产品的元值。如果您不知道如何创建插件,这里有一个教程: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/
【讨论】:
您可以使用以下 MYSQL 查询,wp_postmeta 取决于您的 wordpress 数据库前缀
UPDATE `wp_postmeta` SET `meta_value` = 'yes' WHERE `meta_key` = '_disable_shipping'
【讨论】: