Я использую WordPress / woocommerce.
У меня есть доступ к прайс-листу каждого клиента через веб-сервис, который я успешно интегрировал.
В настоящее время я получаю цену и обновляю woocommerce с помощью хука 'woocommerce_before_shop_loop'.
Проблема, с которой я столкнулся, заключается в том, что если все текущие цены в woocommerce установлены на уровне 1,00 доллара США, но цена, которую платит текущий клиент, составляет 2,00 доллара США при первой загрузке страницы. говорит 1,00 доллара, пока он не будет перезагружен.
Я понимаю, что это потому, что запрос, очевидно, выполняется до запуска моего сценария и загрузки страницы.
Код: Выделить всё
function t31_before_shop_list_call() {
if ( is_user_logged_in()) {
$Conn = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$itemCodesArray = array(); // WILL CONTAIN ARRAY OF SKU's FOR WS
while (have_posts()) : the_post();
global $product;
if( $product->is_type( 'simple' ) ){
$sku = get_post_meta( get_the_ID(), '_sku', true );
array_push($itemCodesArray, $sku);
} elseif( $product->is_type( 'variable' ) ){
$child_ids = $product->get_children();
foreach ($child_ids as $child_id) {
$sku = get_post_meta( $child_id, '_sku', true );
array_push($itemCodesArray, $sku);
}
}
endwhile;
... RUN WEBSERVICE THAT GETS CLIENTS PRICES FOR THE
... RUN THROUGH EACH PRODUCT RETURNED IN WEBSERVICE AND EXEC FOLLOWING UPDATE
UPDATE wp_postmeta
SET meta_value = " . $GDUSproduct_price . "
WHERE post_id = " . $GDUSproduct_id . "
AND meta_key = '_regular_price';";
DELETE
FROM `wp_options`
WHERE (`option_name` LIKE '_transient_wc_var_prices_%'
OR option_name` LIKE '_transient_timeout_wc_var_prices_%')";
}
}
add_action( 'woocommerce_before_shop_loop', 't31_before_shop_list_call', 15 );
Подробнее здесь: https://stackoverflow.com/questions/554 ... oduct-list
Мобильная версия