Вы не можете изменить функцию, которую woocommerce объявили ранее, или написать, используя ту же функцию, которая была объявлена ранее, поэтому, если вы хотите написать пользовательскую функцию, вы можете сделать следующее:
Обратите внимание, у меня естьизменил имя функции
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 );
$product = wc_get_product( $product_id );
if ( $product ) {
$product->set_stock_status( $status );
$product->save();
}
}
}
add_action( 'init', 'update_product_stock_status' );
или, если хотите, можете использовать wc_get_product_id_by_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
перехват, который запускается после завершения загрузки WordPress, но перед отправкой любых заголовков.
но это, конечно, не лучший способ перехватить вашу функцию, используя задание WordPress cron, которое запускается при каждом обновлении файла XML,или лучше, используя 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, проверьте эту ссылку ниже:
Ссылка 1
Ссылка 2