Я использую плагин Role Based Pricing for WooCommerce, чтобы получать изменения цен в зависимости от роли пользователя.
Когда я вызываю функции для получения товаров, фильтр применяется правильно, но когда я звоню, функция через ajax всегда дает значение цены по умолчанию.
function get_products_from_category($quantity=12,$page=1,$cat=[]){
$desiredPost = queryToGetProductsAccordingTofilters($quantity,$page,$cat);
$list = [];
foreach ($desiredPost as $key => $value) {
$myproduct = wc_get_product($value->ID);
$list[] = [
(...)
'price' => $myproduct->get_price().get_woocommerce_currency_symbol(),
];
}
return $list;
}
Если я вызываю функцию обычно в архиве-продукте, в верхнем или нижнем колонтитуле всегда используется цена фильтра, через ajax возвращает нормальное значение.
Уже пытался принудительно загрузить плагин внутри функции
require_once WP_PLUGIN_DIR . '/role-based-pricing-for-woocommerce/addify_role_based_pricing.php';
Функция вызывается по:
add_action('wp_ajax_my_getshopproducts', 'my_getshopproducts'); add_action('wp_ajax_nopriv_my_getshopproducts', 'my_getshopproducts'); function my_getshopproducts(){
//get values from POST, $quantity,$page,$cat
$values = get_products_from_category($quantity,$page,$cat);
echo $json_encode($values);
}
Опять же, если я вызову
get_products_from_category($quantity,$page,$cat)
напрямую, без звонка ajax, указана правильная цена (применяется add_filter).
проверяется, загружены ли плагины, но не может найти причину этого Я думаю, по какой-то причине фильтр не был применен?