Как добавить Pricelist Price, конкретную пользователь, не прерывая скорость страницы продукта WooCommercePhp

Кемеровские программисты php общаются здесь
Anonymous
Как добавить Pricelist Price, конкретную пользователь, не прерывая скорость страницы продукта WooCommerce

Сообщение Anonymous »

Я работаю над отображением конкретной пользовательской ценой Pricelist Price, и она работает должным образом. Однако, когда пользователь посещает страницу списка продуктов, для загрузки требуется больше времени, поскольку я делаю запрос базы данных, чтобы получить цену. Я думал о кэшировании цены, но в любом случае мне нужно позвонить в базу данных для кэширования цены в первый раз. Еще одна проблема, которую цены часто меняются, поэтому я не могу удерживать кэш в течение более длительного времени.add_filter( 'woocommerce_product_get_price', array( $this, 'show_pricelist_price' ), 10, 2);
add_filter( 'woocommerce_product_get_sale_price', array( $this, 'show_pricelist_price' ), 10, 2);
add_filter( 'woocommerce_product_variation_get_price', array( $this, 'show_pricelist_price' ), 10, 2);

public function show_pricelist_price($price, $product) {

if(is_admin())
return $price;

if( current_user_can('manage_options') ) {

return $price;

}

$current_user_id = get_current_user_id();
$id= $product->get_id();

$sale_price = get_post_meta( $id, '_sale_price', true);

$pricelist_id = get_user_meta($current_user_id,'user_pricelist_b2bwoo', true);

if( !is_user_logged_in()) {
$pricelist_id =31;
}

global $wpdb;
$table_name = $wpdb->prefix . 'woo_pricelists_products';

$sku = $product->get_sku();
if (empty($sku) || empty($pricelist_id)) {
return $price;
}

if(!empty($pricelist_id)) {
$query = $wpdb->prepare(
"SELECT final_price FROM $table_name WHERE pricelist_id = %d AND sku = %s",
$pricelist_id,
$sku
);

$get_baseprice = $wpdb->get_var($query);
}

if(!empty($get_baseprice) && empty($sale_price)) {

return $get_baseprice;
}

else {
return $price;
}

}


Подробнее здесь: https://stackoverflow.com/questions/796 ... ommerce-pr

Вернуться в «Php»