WC_Cart_Session::dedupe_cookies
Remove duplicate cookies from the response.
Method of the class: WC_Cart_Session{}
No Hooks.
Returns
null. Nothing (null).
Usage
// private - for code of main (parent) class only $result = $this->dedupe_cookies();
WC_Cart_Session::dedupe_cookies() WC Cart Session::dedupe cookies code WC 10.5.0
private function dedupe_cookies() {
$all_cookies = array_filter(
headers_list(),
function ( $header ) {
return stripos( $header, 'Set-Cookie:' ) !== false;
}
);
$final_cookies = array();
$update_cookies = false;
foreach ( $all_cookies as $cookie ) {
list(, $cookie_value) = explode( ':', $cookie, 2 );
list($cookie_name, $cookie_value) = explode( '=', trim( $cookie_value ), 2 );
if ( stripos( $cookie_name, 'woocommerce_' ) !== false ) {
$key = $this->find_cookie_by_name( $cookie_name, $final_cookies );
if ( false !== $key ) {
$update_cookies = true;
unset( $final_cookies[ $key ] );
}
}
$final_cookies[] = $cookie;
}
if ( $update_cookies ) {
header_remove( 'Set-Cookie' );
foreach ( $final_cookies as $cookie ) {
// Using header here preserves previous cookie args.
header( $cookie, false );
}
}
}