정의 된 과도 상태 재생성 $product or $WooCommerce의 변형 객체

Aug 19 2020

주어진 제품 또는 변형 개체에 대한 모든 기본 과도 상태를 재생성하는 방법이 있는지 정말 궁금합니다.

나는 동적 가격을 표시하고 모든 것이 괜찮은 경우입니다. 하지만 wc_prices_{id}이 새로운 맞춤 가격을 고려하기 위해 과도 상태를 업데이트해야합니다 . 그렇지 않은 경우 첫 페이지로드가 끔찍합니다 (특히 한 번에 여러 제품을 표시하는 상점 페이지에서).

나는 후킹하고있어 woocommerce_product_variation_get_price, woocommerce_product_variation_get_regular_price, woocommerce_variation_prices_price그리고 woocommerce_variation_prices_regular_price짧은에,이 즉석에서 수정 ( EVERY SINGLE의 가격 페이지, 그리고 어린이를 포함하는 부모의 경우, 너무 범위 가격 (최소 / 최대)를 계산하기 위해 아이들의 가격을 변경 부모의).

Woocommerce 코드를 파헤칠 때 어떤 방법이 일시적인 가격을 생성하는지 발견 read_price_data()했습니다 wp-content/plugins/woocommerce/includes/data-stores/class-wc-product-variable-data-store-cpt.php. 그러나 제품 또는 변형 개체에서 호출하기 위해 내 Cron 작업 스크립트라고 부르는 방법을 찾을 수 없습니다.

이 작업에 대한 해결책을 알고 있습니까?

감사합니다.

답변

1 LoicTheAztec Aug 20 2020 at 04:13

변형 캐시 된 가격과 관련된 3 가지 필터 후크는 다음과 같습니다.

  • woocommerce_variation_prices_price
  • woocommerce_variation_prices_regular_price
  • woocommerce_variation_prices_sale_price

캐시 된 가격을 다시 생성하려면 해당 후크에서 사용할 수 있습니다.

wc_delete_product_transients( $variation->get_id() );

그러나 웹 사이트 성능이 저하됩니다.

Woocommerce 3 이후에 도입 된 woocommerce_get_variation_prices_hash필터 후크를 사용하면 해당 후크가 트리거 될 때마다 관련 과도 현상을 삭제하지 않고 훨씬 더 효율적인 방식으로 변형 캐시 된 가격을 새로 고칠 수 있습니다.

문서 및 관련 스레드 :

  • 캐싱 및 동적 가격 – get_variation_prices 메소드에 대한 향후 변경 사항
  • WooCommerce 3에서 후크를 통해 제품 가격 변경
  • woocommerce_get_variation_prices_hash필터 후크를 사용하는 모든 관련 스레드