Я пробовал это двумя способами. Если я использую SQL-запрос, он по-прежнему говорит: вызов неопределенной функции get_wc_product (), когда он пытается вернуть продукт. Если я вставлю вызов $ product = new WC_Product ($ product_id); Он работает как с theSQL, так и с вызовом wc_get_product_id_by_sku ($ sku) ;. Проблема в том случае, когда он попадает в ваш код, он говорит Uncaught Exception: Invalid product ..

ужна помощь. Я пытаюсь обновлять товарный запас продуктов woocommerce программно. У нас есть канал для поставщиков через JSON. Я могу читать данные из ленты и правильно извлекать данные из мета-записи. Я использую последнюю версию WP и WOO. PHP составляет 7,2

Ниже показано, как я нахожу идентификатор продукта в 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 ) );

Это возвращает правильный идентификатор, и я могу использовать его, чтобы увидеть текущие метаданные, которые уже есть:

$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>";

Я тогда обновляю запас, который я получаю от подачи. Это может быть запас, идущий от нуля до 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

Вот где это становится странным.

Обновленный sku

Данные отображаются правильно в представлении продукта в панели администратора. Как примечание, этот SKU может принадлежать к вариации (у нас их много) или это может быть простой продукт. В конце концов, все они, кажется, обновляются нормально. Я не вижу ошибок, которые я вижу.

Я использую небольшой фрагмент PHP в своем файле functions.php, в котором в выпадающем списке отображаются недостающие элементы. Вот:

    /* Grey out out of stock items in the product dropdown */
add_filter( 'woocommerce_variation_is_active', 'grey_out_variations_when_out_of_stock', 10, 2 );

function grey_out_variations_when_out_of_stock( $grey_out, $variation ) {

   if ( ! $variation->is_in_stock() )
        return false;

    return true;
}

Итак, проблемы:

Элемент, которого нет в наличии, не должен отображаться в раскрывающемся списке как кликабельный, но он все еще отображаетсяЗапас на внешнем торце не всегда говорит о нуле, он позволяет выбрать тот, который говорит, что нет запаса, поэтому кнопка добавления в корзину активна и не должна быть. Так что передний конец не видит обновлений.Административная панель Woocommerce для продуктов не сводится к отсутствию на складе для родителей, я должен сделать быстрое редактирование и обновление, чтобы это произошло.В основном, серверная часть видит изменения, но внешний интерфейс не отображается правильно.

Буду признателен за любую помощь, которую может оказать каждый!

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос