: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Google Analytics helpers
* @copyright Copyright (c) 2023, Code Atlantic LLC
if ( ! defined( 'ABSPATH' ) ) {
public static function get_uuid() {
if ( ! isset( $uuid ) ) {
$cookie = self::parse_cookie();
if ( is_array( $cookie ) && ! empty( $cookie['cid'] ) ) {
$uuid = self::generate_uuid();
* Handle the parsing of the _ga cookie or setting it to a unique identifier
public static function parse_cookie() {
if ( ! $cookie && isset( $_COOKIE['_ga'] ) ) {
list( $version, $domainDepth, $cid1, $cid2 ) = preg_split( '[\.]', $_COOKIE['_ga'], 4 );
'domainDepth' => $domainDepth,
'cid' => $cid1 . '.' . $cid2,
* Generate UUID v4 function - needed to generate a CID when one isn't available
public static function generate_uuid() {
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low"
// 16 bits for "time_mid"
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand( 0, 0x0fff ) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand( 0, 0x3fff ) | 0x8000,
* Fire a hit to the google analytis collection api.
* See https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide
* @return array|bool|WP_Error
public static function fire_hit( $data = null ) {
$getString = 'https://ssl.google-analytics.com/collect';
$getString .= '?payload_data&';
$getString .= http_build_query( $data );
$result = wp_remote_get( $getString );