我需要帮助.我正在尝试以编程方式更新woocommerce产品库存数量.我们通过一些JSON向我们提供了供应商.我可以从Feed中读取库存,并且可以正确地从post meta中提取数据.我正在使用WP和WOO的最新版本.PHP是7.2
以下是我如何从SKU中找到产品ID.
$product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
Run Code Online (Sandbox Code Playgroud)
这将返回正确的ID,我可以使用它来查看已存在的当前元数据:
$website_stock = get_post_meta($product_id, '_stock', true);
echo "Website Stock - " . $website_stock . "</br>";
$website_stock_status = get_post_meta($product_id, '_stock_status', true);
echo "Website Stock Status - " . $website_stock_status . "</br>";
Run Code Online (Sandbox Code Playgroud)
然后我更新了我从Feed中获得的库存.这可以是从零到x或x到零以及介于两者之间的任何地方.这是我更新缺货的方式:
$out_of_stock_staus = 'outofstock';
update_post_meta($product_id, '_stock', 0);
update_post_meta($product_id, '_stock_status', wc_clean( $out_of_stock_staus ));
wc_delete_product_transients( $product_id ); // Clear/refresh the variation cache
Run Code Online (Sandbox Code Playgroud)
这是它变得奇怪的地方.
数据在管理面板的产品视图中正确显示.作为旁注,这个SKU可以属于一个变体(我们有很多),或者它可能是一个简单的产品.最后,他们似乎都更新了.我没有看到错误.
我在我的functions.php中使用了一个小小的PHP片段,它在下拉列表中显示缺货项目.这里是:
/* Grey out out of stock …Run Code Online (Sandbox Code Playgroud) 我以为这很容易,但我被困住了。我想做的就是在产品页面上的变体价格后面添加“each”一词。我找到的解决方案将其添加到类别页面和产品页面的两个位置。
代码是:
/* Adds a text Each - after price */
function change_product_price( $price ) {
$price .= ' each';
return $price;
}
add_filter( 'woocommerce_get_price_html', 'change_product_price' );
Run Code Online (Sandbox Code Playgroud)
从上图中,我只需要将每个添加到“添加到购物车”按钮上方的价格中,而不需要像上图中划掉的部分那样添加其他包。
感谢您提供的任何指导。
我有一个 php cron 作业,正在更新来自第 3 方供应商的产品信息。这些变化可以是价格、销售价格、库存等。
我的一切都在运行,除了当我通过以下代码销售产品时:
update_post_meta( $product_id, '_sale_price', $sale_price );
update_post_meta( $product_id, '_price', $sale_price );
Run Code Online (Sandbox Code Playgroud)
产品已正确更新,并在网站和产品管理上显示产品的销售价格。当我使用 woocommerce 的短代码之一来显示在售产品时,它不会撤回通过上述代码更新的内容,除非它是通过管理面板完成的。
[products limit="24" columns="4" on_sale="true" ]
Run Code Online (Sandbox Code Playgroud)
所以我的代码没有做 woocommerce 所做的事情,但我不知道我错过了什么。到目前为止,我发现的唯一解决方法是删除管理面板中的销售价格 - >保存,然后将其添加回来 - >并再次保存。由于 3,000 多种产品有 18,000 多种变体,这不是手工可以完成的事情。
顺便说一句:当我们导入 vis csv 文件源时,我也遇到了 WP all import 的问题。
任何想法或想法都会有帮助。
谢谢!