Php 如何使用xml提要更改商业库存状态
我在我的域中上载了一个xml文件,其中包含产品可用性。如何使用此更新库存状态?我在想下面的事情,但我不知道如何调用和使用它Php 如何使用xml提要更改商业库存状态,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我在我的域中上载了一个xml文件,其中包含产品可用性。如何使用此更新库存状态?我在想下面的事情,但我不知道如何调用和使用它 function wc_update_product_stock_status() { global $xml; foreach($xml as $x) { $sku = $x->sku; $availability = $x->availability; switch($availa
function wc_update_product_stock_status() {
global $xml;
foreach($xml as $x) {
$sku = $x->sku;
$availability = $x->availability;
switch($availability) {
case 1:
$status='instock';
break;
case 0:
$status='outofstock';
break;
}
// get the product ID from the SKU
$product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku'AND meta_value='%s' LIMIT 1", $sku ));
$product = wc_get_product( $product_id );
if ( $product ) {
$product->set_stock_status( $status );
$product->save();
}
}
}
我做错什么了吗?我需要添加一些东西来改善它吗
谢谢您不能修改之前声明的函数,也不能使用之前声明的函数编写,因此如果您想编写自定义函数,可以执行以下操作:
if ( ! wp_next_scheduled( 'my_stock_update' ) ) {
wp_schedule_event( time(), 'hourly', 'my_stock_update' );
}
add_action( 'my_stock_update', 'update_product_stock_status' );
注意,我已经修改了函数名
或者,如果需要,您可以在自定义功能中使用wc\u-get\u-product\u-id\u-by\u-sku
,如下所示:
function update_product_stock_status() {
global $xml;
foreach ( $xml as $x ) {
$sku = $x->sku;
$availability = $x->availability;
switch ( $availability ) {
case 1:
$status = 'instock';
break;
case 0:
$status = 'outofstock';
break;
}
// get the product ID from the SKU
$product_id = wc_get_product_id_by_sku( $sku );
if ( $product_id ) {
wc_update_product_stock_status( $product_id, $status );
}
}
}
add_action( 'init', 'update_product_stock_status' );
我使用init
hook调用了这个函数,它在WordPress完成加载后但在发送任何头之前触发
但这当然不是在每次更新XML文件时使用WordPress cron job钩住函数的最佳方式。或者更好地使用linux crontab
例如,要使用Wordpress Cron运行函数,可以添加以下内容:
if ( ! wp_next_scheduled( 'my_stock_update' ) ) {
wp_schedule_event( time(), 'hourly', 'my_stock_update' );
}
add_action( 'my_stock_update', 'update_product_stock_status' );
使用上面的代码,您的函数将每小时运行一次,当然您可以修改它
有关WordPress Cron的更多详细信息,请查看以下链接:
您可以使用WordPress cron schedule在每次下载XML文件时运行此函数,也可以使用Linux cron运行函数I get Call to undefined function wc_update_product_stock_status(),我的代码不知道您是如何调用函数的?wc_update_product_stock_status();我需要钩子吗?