以编程方式设置产品价格,使其在 Woocommerce 中随处显示

问题描述 投票:0回答:2

我有一个 php cron 作业,正在更新来自第 3 方供应商的产品信息。这些变化可以是价格、销售价格、库存等。

我的一切都在运行,除了当我通过以下代码出售产品时:

 update_post_meta( $product_id, '_sale_price', $sale_price );
 update_post_meta( $product_id, '_price', $sale_price );

产品已正确更新,并在网站和产品管理上显示产品的销售价格。当我使用 woocommerce 的短代码之一来显示在售产品时,它不会撤回通过上述代码更新的内容,只有通过管理面板完成时才可以。

[products limit="24" columns="4" on_sale="true" ]

所以我的代码没有做 woocommerce 所做的事情,但我不知道我错过了什么。到目前为止,我发现的唯一解决方法是删除管理面板中的销售价格 - >保存,然后将其添加回来 - >并再次保存。由于 3,000 多种产品有 18,000 多种变体,这不是手工可以完成的事情。

顺便说一句:当我们导入 vis csv 文件源时,我也遇到了 WP all import 的问题。

任何想法或想法都会有帮助。

谢谢!

php wordpress woocommerce product price
2个回答
5
投票

最好的方法应该是使用 Woocommerce 3 中引入的 CRUD 方法…但由于它是在 cron 作业中,我不确定它是否有效。无论如何,请尝试以下操作:

// Get an instance of the WC_Product object
$product = new WC_Product( $product_id );

// Set product prices
$product->set_sale_price( $sale_price );
$product->set_price( $price );

// Save data and update caches
$product->save();

现在,根据产品类型,您可能需要以不同的方式调用产品对象实例......


0
投票

CRUD 方法将起作用...我必须首先加载 wp-load.php 然后我可以访问我的 cron 作业运行 php.file 中的所有 WP 函数 要排除故障,我在 Cpanel 终端中运行它或使用 Windows 任务计划程序在本地运行它 cron 命令类似于

cd /home/userNamefolder/public_html && /usr/local/bin/php 
/home/userNamefolder/public_html/wp-   
content/plugins/customPlugin/process_products.php

在文件的开头我运行 wp load

$wp_load_path = '/home/usernamefolder/public_html/wp-load.php';
// Check if the wp-load.php file exists

// Check if the wp-load.php file exists
if (file_exists($wp_load_path)) {
// Include wp-load.php
require_once $wp_load_path;
error_log('load wp path');
echo('load wp');
} else {
error_log('unable to locate path');
// Handle the case where wp-load.php does not exist
die(dirname(__FILE__));
}
© www.soinside.com 2019 - 2024. All rights reserved.