source

WooCommerce 쿠키 및 세션 - 현재 제품 카트 가져오기

factcode 2023. 3. 20. 23:37
반응형

WooCommerce 쿠키 및 세션 - 현재 제품 카트 가져오기

카트에 추가된 제품으로 작동하는 기능을 위해 WooCommerce의 쿠키를 배우려고 합니다.나는 콘솔로 썼다.document.cookie그리고 나는 다음과 같은 데이터를 얻는다.

woocommerce_items_in_cart=1;
woocommerce_cart_hash=500d17f6c010b62b25c3f52893be945d;

쿠키가...woocommerce_cart_hash카트에 제품이 들어 있는데 제품 이름을 어떻게 알 수 있는지 모르겠어요.이게 뭐야500d17f6c010b62b25c3f52893be945d

어떤 도움이라도 주시면 감사하겠습니다.

아래 보시는 바와 같이 WooCommerce 세션 DB 테이블과 관련된 세 번째 복잡한 쿠키가 있기 때문에 에는 카트에 제품이 포함되어 있지 않습니다.

데이터는 쿠키 자체에 저장되지 않고 DB WooCommerce 세션에 있는 해당 참조에 저장됩니다(자세한 내용은 아래 참조).

또한 WordPress는 일부 로컬 데이터 스토리지를 활성화한다는 점도 유의해야 합니다.

다음 데이터는 로그가 없는 사용자가 2개의 제품을 장바구니에 추가하는 실제 사례에서 가져온 것입니다.

1) 기록되지 않은 사용자가 카트에 무언가를 추가할 때 Woocommerce는 3개의 쿠키를 설정합니다.

  • woocommerce_cart_hash=>44ffcb32800e5b20cfbb080753d48408 (보안/하드웨어 해시)
  • woocommerce_items_in_cart=>1 (로 설정)1카트에 무엇이 실려 있을 때)
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f=>ac5f880c99503169574ad996f35f85c5%7C%7C1469492696%7C%7C1469489096%7C%7C17e565032403642121f5ad12cfa72c41 (이 쿠키와 동시에 생성된 DB 테이블 세션과 완전히 관련됨)

2) DB 테이블에서는 세션이 동시에 생성됩니다.

session_id =>6
session_key =>ac5f880c99503169574ad996f35f85c5
session_value =>a:18:{s:4:"cart";s:600:"a:2:{s:32:"d82c8d1619ad8176d665453cfb2e55f0";a:9:{s:10:"product_id";i:53;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:10:"line_total";d:35;s:8:"line_tax";i:0;s:13:"line_subtotal";i:35;s:17:"line_subtotal_tax";i:0;s:13:"line_tax_data";a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}}s:32:"a5bfc9e07964f8dddeb95fc584cd965d";a:9:{s:10:"product_id";i:37;s:12:"variation_id";i:0;s:9:"variation";a:0:{}s:8:"quantity";i:1;s:10:"line_total";d:18;s:8:"line_tax";i:0;s:13:"line_subtotal";i:18;s:17:"line_subtotal_tax";i:0;s:13:"line_tax_data";a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}}}";s:15:"applied_coupons";s:6:"a:0:{}";s:23:"coupon_discount_amounts";s:6:"a:0:{}";s:27:"coupon_discount_tax_amounts";s:6:"a:0:{}";s:21:"removed_cart_contents";s:6:"a:0:{}";s:19:"cart_contents_total";d:53;s:5:"total";d:53;s:8:"subtotal";i:53;s:15:"subtotal_ex_tax";i:53;s:9:"tax_total";i:0;s:5:"taxes";s:6:"a:0:{}";s:14:"shipping_taxes";s:6:"a:0:{}";s:13:"discount_cart";i:0;s:17:"discount_cart_tax";i:0;s:14:"shipping_total";N;s:18:"shipping_tax_total";i:0;s:9:"fee_total";i:0;s:4:"fees";s:6:"a:0:{}";}
session_expiry=>1469492696

모든 코어 프로세스를 설명할 수는 없습니다(이를 위해 php 코어 파일을 확인해야 합니다).
하지만 당신이 바라본다면wp_woocommerce_session_… cookie value를 사용하여 잘라낼 수 있습니다.%7C%7C서브스트링에 의해 이 쿠키 값에 대해 4개의 서브스트링이 제공됩니다.

  • ac5f880c99503169574ad996f35f85c5(DB 및 표 참조와 동일)
  • 1469492696(테이블의 DB).
  • 1469489096 (위도 마찬가지).
  • 17e565032403642121f5ad12cfa72c41(? - 이게 무슨 용도인지...)

사용자가 돌아와서 카트에서 항목을 하나 삭제한 경우:

  • woocommerce_cart_hash cookie 값 변경
  • woocommerce_items_in_cart 아이템이 카트에 남아 있기 때문에 쿠키 값은 변경되지 않습니다.
  • wp_woocommerce_session_3413758cad2ada414127ffee7347e40f 쿠키 값은 변경되지 않습니다.
  • DB TABLE, 세션 ID가 새로 생성된 세션 ID에 의해 삭제/대체되었습니다. 이는 카트 변경 사항을 반영합니다(1개의 제품만 해당).

테이블 간의 할 수 .wp_woocommerce_sessions 않은 된 모든 되어 있습니다.
(시리얼라이즈된 다차원 배열 또는 객체)

Class WC_Cart사용하면 이 데이터를 얻을 수 있습니다.
'아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아,WC()->cart코드에 .

Class WC_Session_Handler사용하면 세션을 직접 조작할 수 있습니다.

마지막으로 클래스 WC_Ajax카트 변경에 사용합니다.


참고 자료:

혹시 관심 있으신 분 계실지 모르니까선택된 답변은 상황을 분석하는데 매우 도움이 됩니다.OP에서 세션 쿠키에서 제품을 얻는 방법을 물어보고 있어서 후속 조치를 취하려고 생각했습니다.

카트 할 수 .wc_woocommerce_session_★★★★

  $session_id = null;
  $values = null;

  foreach( $_COOKIE as $key => $value ) {

    if( stripos( $key, 'wp_woocommerce_session_' ) === false ) {
      continue;
    }

    $values = explode( '||', $value );

  }

  $session_id = $values[0];
  $session = new WC_Session_Handler();
  $session_data = $session->get_session( $session_id );

  // Contains array of items in cart including product ids, quantities, totals, etc.
  $cart_data = unserialize( $session_data['cart'] );

언급URL : https://stackoverflow.com/questions/38546354/woocommerce-cookies-and-sessions-get-the-current-products-in-cart

반응형