Linux heracles.o2switch.net 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
/
home
/
ophq1335
/
www
/
wp-content
/
plugins
/
wp-seopress
/
inc
/
functions
/
/home/ophq1335/www/wp-content/plugins/wp-seopress/inc/functions/options-google-analytics.php
<?php /** * Options google analytics * * @package Functions */ defined( 'ABSPATH' ) || exit( 'Please don’t call the plugin directly. Thanks :)' ); /** * Cookies user consent scripts * * @return void */ function seopress_cookies_user_consent_scripts() { if ( '1' !== seopress_get_service( 'GoogleAnalyticsOption' )->getEnableOption() ) { return; } if ( '' === seopress_get_service( 'GoogleAnalyticsOption' )->getGA4() ) { return; } if ( isset( $_COOKIE['seopress-user-consent-accept'] ) ) { return; } $js = ' <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); }'; // Default. $consent = " gtag('consent', 'default', { 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'ad_storage': 'denied', 'analytics_storage': 'denied', 'wait_for_update': 500, }); \n"; if ( isset( $_COOKIE['seopress-user-consent-close'] ) && '1' === $_COOKIE['seopress-user-consent-close'] ) { $consent = " gtag('consent', 'default', { 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'ad_storage': 'denied', 'analytics_storage': 'denied', 'wait_for_update': 500, }); \n"; } $consent = apply_filters( 'seopress_user_consent', $consent ); $js .= $consent; $js .= "gtag('js', new Date()); \n"; // Measurement ID. if ( '' !== seopress_get_service( 'GoogleAnalyticsOption' )->getGA4() ) { $seopress_gtag_ga4 = "gtag('config', '" . seopress_get_service( 'GoogleAnalyticsOption' )->getGA4() . "');"; $seopress_gtag_ga4 = apply_filters( 'seopress_gtag_ga4', $seopress_gtag_ga4 ); $js .= $seopress_gtag_ga4; $js .= "\n"; } $js .= '</script>'; echo $js; } /** * Cookies user consent html * * @return void */ function seopress_cookies_user_consent_html() { if ( ! empty( seopress_get_service( 'GoogleAnalyticsOption' )->getOptOutMsg() ) ) { $msg = seopress_get_service( 'GoogleAnalyticsOption' )->getOptOutMsg(); } elseif ( get_option( 'wp_page_for_privacy_policy' ) ) { $msg = __( 'This site uses cookies for analytics and to improve your experience. By clicking Accept, you consent to our use of cookies. Learn more in our <a href="[seopress_privacy_page]">privacy policy</a>.', 'wp-seopress' ); } else { $msg = __( 'This site uses cookies for analytics and to improve your experience. By clicking Accept, you consent to our use of cookies.', 'wp-seopress' ); } if ( get_option( 'wp_page_for_privacy_policy' ) && '' !== $msg ) { $seopress_privacy_page = esc_url( get_permalink( get_option( 'wp_page_for_privacy_policy' ) ) ); $msg = str_replace( '[seopress_privacy_page]', $seopress_privacy_page, $msg ); } $msg = apply_filters( 'seopress_rgpd_message', $msg ); $consent_btn = seopress_get_service( 'GoogleAnalyticsOption' )->getOptOutMessageOk(); if ( empty( $consent_btn ) || ! $consent_btn ) { $consent_btn = __( 'Accept', 'wp-seopress' ); } $close_btn = seopress_get_service( 'GoogleAnalyticsOption' )->getOptOutMessageClose(); if ( empty( $close_btn ) || ! $close_btn ) { $close_btn = __( 'Decline', 'wp-seopress' ); } $user_msg = '<div data-nosnippet class="seopress-user-consent seopress-user-message seopress-user-consent-hide"> <p>' . $msg . '</p> <p> <button id="seopress-user-consent-accept" type="button">' . $consent_btn . '</button> <button type="button" id="seopress-user-consent-close">' . $close_btn . '</button> </p> </div>'; $backdrop = '<div class="seopress-user-consent-backdrop seopress-user-consent-hide"></div>'; $user_msg = apply_filters( 'seopress_rgpd_full_message', $user_msg, $msg, $consent_btn, $close_btn, $backdrop ); echo $user_msg . $backdrop; } /** * Cookies edit choice html * * @return void */ function seopress_cookies_edit_choice_html() { $opt_out_edit_choice = seopress_get_service( 'GoogleAnalyticsOption' )->getOptOutEditChoice(); if ( '1' !== $opt_out_edit_choice ) { return; } $edit_cookie_btn = seopress_get_service( 'GoogleAnalyticsOption' )->getOptOutMessageEdit(); if ( empty( $edit_cookie_btn ) || ! $edit_cookie_btn ) { $edit_cookie_btn = __( 'Cookie preferences', 'wp-seopress' ); } $user_msg = '<div data-nosnippet class="seopress-user-consent seopress-edit-choice"> <p> <button id="seopress-user-consent-edit" type="button">' . $edit_cookie_btn . '</button> </p> </div>'; $user_msg = apply_filters( 'seopress_rgpd_edit_message', $user_msg, $edit_cookie_btn ); echo $user_msg; } /** * Cookies user consent styles * * @return void */ function seopress_cookies_user_consent_styles() { // Width. $width = seopress_get_service( 'GoogleAnalyticsOption' )->getCbWidth(); // Determine if full-width bar mode (100% width) or modal mode // Default to full-width if no width is set (more universal and less intrusive). $is_full_width = ( empty( $width ) || '100%' === $width || '100' === $width ); $styles = '<style>.seopress-user-consent {position: fixed;z-index: 8000;display: inline-flex;flex-direction: column;justify-content: center;border: none;box-sizing: border-box;'; // Alignment (only for modal mode). $alignment = seopress_get_service( 'GoogleAnalyticsOption' )->getCbAlign(); if ( empty( $alignment ) ) { $alignment = 'center'; } // Full-width bar mode vs Modal mode. if ( $is_full_width ) { // Full-width bar mode (improved traditional style). $styles .= 'left: 0;right: 0;width: 100%;padding: 18px 24px;'; } else { // Modal mode (new modern style). $styles .= 'padding: 24px 28px;max-width:100%;'; $needle = '%'; if ( false !== strpos( $width, $needle ) ) { $unit = ''; } else { $unit = 'px'; } $styles .= 'width: ' . $width . $unit . ';'; // Apply horizontal alignment. if ( 'left' === $alignment ) { $styles .= 'left: 20px;right: auto;'; } elseif ( 'right' === $alignment ) { $styles .= 'right: 20px;left: auto;'; } else { // Center (default). $styles .= 'left: 50%;'; } } // Position. $position = seopress_get_service( 'GoogleAnalyticsOption' )->getCbPos(); if ( $is_full_width ) { // Full-width bar positioning. if ( 'top' === $position ) { $styles .= 'top:0;'; } elseif ( 'center' === $position ) { $styles .= 'top:50%;transform: translateY(-50%);'; } else { $styles .= 'bottom:0;'; } } else { // Modal positioning. if ( 'top' === $position ) { $styles .= 'top:20px;'; } elseif ( 'center' === $position ) { $styles .= 'top:50%;'; } else { $styles .= 'bottom:20px;'; } // Apply transform based on alignment. if ( 'left' === $alignment || 'right' === $alignment ) { // No horizontal transform for left/right alignment. if ( 'center' === $position ) { $styles .= 'transform: translateY(-50%);'; } } else { // Center alignment uses translateX. if ( 'top' === $position || 'bottom' === $position ) { $styles .= 'transform: translateX(-50%);'; } else { $styles .= 'transform: translate(-50%, -50%);'; } } } // Text alignment. $txt_align = seopress_get_service( 'GoogleAnalyticsOption' )->getCbTxtAlign(); if ( 'left' === $txt_align ) { $styles .= 'text-align:left;'; } elseif ( 'right' === $txt_align ) { $styles .= 'text-align:right;'; } else { $styles .= 'text-align:center;'; } // Background color. $bg_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBg(); if ( ! empty( $bg_color ) ) { $styles .= 'background:' . $bg_color . ';'; } else { // Modern white background for both modes. $styles .= 'background:#FFFFFF;'; } // Modern enhancements - only apply in modal mode. if ( ! $is_full_width ) { $styles .= 'border-radius: 12px;'; $styles .= 'box-shadow: 0 4px 24px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1);'; } else { // Full-width bar gets subtle shadow instead of border. if ( 'bottom' === $position || empty( $position ) ) { $styles .= 'box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.08);'; } else { $styles .= 'box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);'; } } $styles .= '}'; // Responsive improvements. if ( ! $is_full_width ) { // Modal mode responsive - always center horizontally on mobile. $styles .= '@media (max-width: 782px) {.seopress-user-consent {'; $styles .= 'width: calc(100% - 32px) !important;'; $styles .= 'max-width: calc(100% - 32px) !important;'; $styles .= 'left: 50% !important;'; $styles .= 'right: auto !important;'; $styles .= 'transform: translateX(-50%) !important;'; $styles .= 'bottom: 16px !important;'; $styles .= 'top: auto !important;'; $styles .= 'padding: 20px;'; $styles .= '}}'; } else { // Full-width mode responsive - stack buttons below text on mobile. $styles .= '@media (max-width: 782px) {'; $styles .= '.seopress-user-consent {padding: 16px;}'; $styles .= '.seopress-user-consent.seopress-user-message {flex-direction: column !important;align-items: stretch;gap: 16px;}'; $styles .= '.seopress-user-consent.seopress-user-message p:first-child {margin: 0 !important;text-align: center;}'; $styles .= '.seopress-user-consent.seopress-user-message p:last-child {width: 100%; flex-direction: column;justify-content: stretch;gap: 10px;}'; $styles .= '.seopress-user-consent.seopress-user-message button {width: 100% !important;min-width: auto !important;}'; $styles .= '}'; $styles .= '}'; } // Paragraph styling with better spacing. if ( ! $is_full_width ) { // Modal mode - vertical layout. $styles .= '.seopress-user-consent.seopress-user-message p:first-child {margin: 0 0 16px 0;line-height: 1.6;}'; } else { // Full-width mode - text on left, buttons on right on desktop. $styles .= '.seopress-user-consent.seopress-user-message p:first-child {margin: 0;line-height: 1.6;flex: 1;}'; } $styles .= '.seopress-user-consent p {margin: 0;font-size: 15px;line-height: 1.6;'; // Text color. $txt_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbTxtCol(); if ( ! empty( $txt_color ) ) { $styles .= 'color:' . $txt_color . ';'; } else { $styles .= 'color:#2c3e50;'; } $styles .= '}'; // Link styling. $link_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbLkCol(); if ( ! empty( $link_color ) ) { $styles .= '.seopress-user-consent a{color:' . $link_color . ';'; } else { $styles .= '.seopress-user-consent a{color:#1a1a1a;'; } $styles .= 'text-decoration: underline;font-weight: 500;}'; $styles .= '.seopress-user-consent a:hover{text-decoration: none;opacity: 0.7;}'; // Button container for better layout. if ( ! $is_full_width ) { // Modal mode - centered buttons below text. $styles .= '.seopress-user-consent.seopress-user-message p:last-child {display: flex;gap: 12px;justify-content: center;flex-wrap: wrap;margin: 0;}'; } else { // Full-width mode - inline buttons to the right on desktop. $styles .= '.seopress-user-consent.seopress-user-message {flex-direction: row;align-items: center;gap: 24px;}'; $styles .= '.seopress-user-consent.seopress-user-message p:last-child {display: flex;gap: 12px;justify-content: flex-end;flex-wrap: nowrap;margin: 0;flex-shrink: 0;}'; } // Modern button styling. $styles .= '.seopress-user-consent button {'; $styles .= 'padding: 12px 24px;'; $styles .= 'border: none;'; $styles .= 'border-radius: 6px;'; $styles .= 'font-size: 15px;'; $styles .= 'font-weight: 600;'; $styles .= 'cursor: pointer;'; $styles .= 'transition: all 0.2s ease;'; $styles .= 'flex: 0 1 auto;'; $styles .= 'min-width: 120px;'; // Btn background color. $btn_bg_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnBg(); if ( ! empty( $btn_bg_color ) ) { $styles .= 'background:' . $btn_bg_color . ';'; } else { // Modern primary button color. $styles .= 'background:#1a1a1a;'; } // Btn text color. $btn_txt_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnCol(); if ( ! empty( $btn_txt_color ) ) { $styles .= 'color:' . $btn_txt_color . ';'; } else { $styles .= 'color:#ffffff;'; } $styles .= '}'; // Button hover state. $styles .= '.seopress-user-consent button:hover{'; $styles .= 'transform: translateY(-1px);'; $styles .= 'box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);'; // Background hover color. $bg_hover_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnBgHov(); if ( ! empty( $bg_hover_color ) ) { $styles .= 'background:' . $bg_hover_color . ';'; } else { $styles .= 'background:#000000;'; } // Text hover color. $txt_hover_color = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnColHov(); if ( ! empty( $txt_hover_color ) ) { $styles .= 'color:' . $txt_hover_color . ';'; } $styles .= '}'; // Secondary button (Decline). $styles .= '#seopress-user-consent-close{'; $styles .= 'border: 2px solid #d1d5db !important;'; // Background secondary button. $bg_secondary_btn = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnSecBg(); if ( ! empty( $bg_secondary_btn ) ) { $styles .= 'background:' . $bg_secondary_btn . ';'; } else { $styles .= 'background:#ffffff;'; } // Color secondary button. $color_secondary_btn = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnSecCol(); if ( ! empty( $color_secondary_btn ) ) { $styles .= 'color:' . $color_secondary_btn . ';'; } else { $styles .= 'color:#374151;'; } $styles .= '}'; // Secondary button hover. $styles .= '#seopress-user-consent-close:hover{'; // Background secondary button hover. $bg_secondary_btn_hover = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnSecBgHov(); if ( ! empty( $bg_secondary_btn_hover ) ) { $styles .= 'background:' . $bg_secondary_btn_hover . ';'; } else { $styles .= 'background:#f9fafb;'; $styles .= 'border-color: #9ca3af !important;'; } // Color secondary button hover. $color_secondary_btn_hover = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBtnSecColHov(); if ( ! empty( $color_secondary_btn_hover ) ) { $styles .= 'color:' . $color_secondary_btn_hover . ';'; } else { $styles .= 'color:#1f2937;'; } $styles .= '}'; // Mobile button adjustments. $styles .= '@media (max-width: 480px) {'; $styles .= '.seopress-user-consent.seopress-user-message p:last-child {flex-direction: column;}'; $styles .= '.seopress-user-consent button {width: 100%;min-width: auto;}'; $styles .= '}'; $cb_backdrop = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBackdrop(); if ( ! empty( $cb_backdrop ) ) { $bg_backdrop = seopress_get_service( 'GoogleAnalyticsOption' )->getCbBackdropBg(); if ( empty( $bg_backdrop ) || ! $bg_backdrop ) { $bg_backdrop = 'rgba(0,0,0,.5)'; } $styles .= '.seopress-user-consent-backdrop{'; $styles .= 'display: flex;'; $styles .= '-webkit-box-align: center;'; $styles .= '-webkit-align-items: center;'; $styles .= '-ms-flex-align: center;'; $styles .= 'align-items: center;'; $styles .= 'background: ' . $bg_backdrop . ';'; $styles .= 'backdrop-filter: blur(2px);'; $styles .= 'bottom: 0;'; $styles .= '-webkit-box-orient: vertical;'; $styles .= '-webkit-box-direction: normal;'; $styles .= '-webkit-flex-direction: column;'; $styles .= '-ms-flex-direction: column;'; $styles .= 'flex-direction: column;'; $styles .= 'left: 0;'; $styles .= '-webkit-overflow-scrolling: touch;'; $styles .= 'overflow-y: auto;'; $styles .= 'position: fixed;'; $styles .= 'right: 0;'; $styles .= '-webkit-tap-highlight-color: transparent;'; $styles .= 'top: 0;'; $styles .= 'z-index: 7998;'; $styles .= '}'; } $styles .= '.seopress-user-consent-hide{display:none !important;}'; $styles .= '.seopress-edit-choice{ background: none; justify-content: flex-start; align-items: flex-start; z-index: 7999; border: none; width: auto; transform: none !important; left: 20px !important; right: auto !important; bottom: 20px; top: auto; box-shadow: none; padding: 0; }'; $styles .= '</style>'; $styles = apply_filters( 'seopress_rgpd_full_message_styles', $styles ); echo $styles; } /** * Cookies user consent render * * @return void */ function seopress_cookies_user_consent_render() { $hook = seopress_get_service( 'GoogleAnalyticsOption' )->getHook(); if ( empty( $hook ) || ! $hook ) { $hook = 'wp_head'; } add_action( $hook, 'seopress_cookies_user_consent_html' ); add_action( $hook, 'seopress_cookies_edit_choice_html' ); add_action( $hook, 'seopress_cookies_user_consent_styles' ); add_action( 'wp_head', 'seopress_cookies_user_consent_scripts' ); } if ( '1' === seopress_get_service( 'GoogleAnalyticsOption' )->getDisable() ) { if ( is_user_logged_in() ) { global $wp_roles; // Get current user role. if ( isset( wp_get_current_user()->roles[0] ) ) { $seopress_user_role = wp_get_current_user()->roles[0]; // If current user role matchs values from SEOPress GA settings then apply. if ( ! empty( seopress_get_service( 'GoogleAnalyticsOption' )->getRoles() ) ) { if ( array_key_exists( $seopress_user_role, seopress_get_service( 'GoogleAnalyticsOption' )->getRoles() ) ) { // Do nothing. } else { seopress_cookies_user_consent_render(); } } else { seopress_cookies_user_consent_render(); } } else { seopress_cookies_user_consent_render(); } } else { seopress_cookies_user_consent_render(); } } // Build Custom GA. function seopress_google_analytics_js( $echo ) { if ( '' !== seopress_get_service( 'GoogleAnalyticsOption' )->getGA4() && '1' === seopress_get_service( 'GoogleAnalyticsOption' )->getEnableOption() ) { // Init. $tracking_id = seopress_get_service( 'GoogleAnalyticsOption' )->getGA4(); $seopress_google_analytics_config = array(); $seopress_google_analytics_event = array(); $seopress_google_analytics_html = "\n"; if ( ! isset( $_COOKIE['seopress-user-consent-close'] ) ) { $seopress_google_analytics_html .= "<script async src='https://www.googletagmanager.com/gtag/js?id=" . $tracking_id . "'></script>"; } $seopress_google_analytics_html .= '<script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);}'; // Consent mode v2. $consent = ''; $update = ( ! empty( $_POST['consent'] ) && $_POST['consent'] === 'update' ) ? true : false; if ( true === $update ) { if ( isset( $_COOKIE['seopress-user-consent-accept'] ) && '1' === $_COOKIE['seopress-user-consent-accept'] ) { $consent = "gtag('consent', 'update', { 'ad_storage': 'granted', 'ad_user_data': 'granted', 'ad_personalization': 'granted', 'analytics_storage': 'granted' });"; } if ( isset( $_COOKIE['seopress-user-consent-close'] ) && '1' === $_COOKIE['seopress-user-consent-close'] ) { $consent = "gtag('consent', 'update', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' });"; } } elseif ( isset( $_COOKIE['seopress-user-consent-accept'] ) && '1' === $_COOKIE['seopress-user-consent-accept'] ) { $consent = " gtag('consent', 'default', { 'ad_storage': 'granted', 'ad_user_data': 'granted', 'ad_personalization': 'granted', 'analytics_storage': 'granted', 'wait_for_update': 500, }); \n"; } $consent = apply_filters( 'seopress_user_consent', $consent ); $seopress_google_analytics_html .= $consent; $seopress_google_analytics_html .= "gtag('js', new Date());\n"; if ( is_ssl() ) { // Set cookie domain to auto (prevent issues with subdomains). $seopress_google_analytics_html .= "gtag('set', 'cookie_domain', 'auto');\n"; // Set cookie flags to SameSite=None;Secure (prevent issues with subdomains). $seopress_google_analytics_html .= "gtag('set', 'cookie_flags', 'SameSite=None;Secure');\n"; } $features = ''; if ( ! isset( $_COOKIE['seopress-user-consent-close'] ) ) { // Dimensions. $seopress_google_analytics_config['cd']['cd_hook'] = apply_filters( 'seopress_gtag_cd_hook_cf', isset( $seopress_google_analytics_config['cd']['cd_hook'] ) ); if ( ! has_filter( 'seopress_gtag_cd_hook_cf' ) ) { unset( $seopress_google_analytics_config['cd']['cd_hook'] ); } $seopress_google_analytics_event['cd_hook'] = apply_filters( 'seopress_gtag_cd_hook_ev', isset( $seopress_google_analytics_event['cd_hook'] ) ); if ( ! has_filter( 'seopress_gtag_cd_hook_ev' ) ) { unset( $seopress_google_analytics_config['cd']['cd_hook'] ); } $cd_author_option = seopress_get_service( 'GoogleAnalyticsOption' )->getCdAuthor(); $cd_category_option = seopress_get_service( 'GoogleAnalyticsOption' )->getCdCategory(); $cd_tag_option = seopress_get_service( 'GoogleAnalyticsOption' )->getCdTag(); $cd_post_type_option = seopress_get_service( 'GoogleAnalyticsOption' )->getCdPostType(); $cd_logged_in_user_option = seopress_get_service( 'GoogleAnalyticsOption' )->getCdLoggedInUser(); if ( ( ! empty( $cd_author_option ) && 'none' !== $cd_author_option ) || ( ! empty( $cd_category_option ) && 'none' !== $cd_category_option ) || ( ! empty( $cd_tag_option ) && 'none' !== $cd_tag_option ) || ( ! empty( $cd_post_type_option ) && 'none' !== $cd_post_type_option ) || ( ! empty( $cd_logged_in_user_option ) && 'none' !== $cd_logged_in_user_option ) || ( '' !== isset( $seopress_google_analytics_config['cd']['cd_hook'] ) && '' !== isset( $seopress_google_analytics_event['cd_hook'] ) ) ) { $seopress_google_analytics_config['cd']['cd_start'] = '{'; } else { unset( $seopress_google_analytics_config['cd'] ); } if ( ! empty( $cd_author_option ) ) { if ( 'none' !== $cd_author_option ) { if ( is_singular() ) { $seopress_google_analytics_config['cd']['cd_author'] = "'" . $cd_author_option . "': 'cd_author',"; $seopress_google_analytics_event['cd_author'] = "gtag('event', '" . __( 'Authors', 'wp-seopress' ) . "', {'cd_author': '" . get_the_author() . "', 'non_interaction': true});"; $seopress_google_analytics_config['cd']['cd_author'] = apply_filters( 'seopress_gtag_cd_author_cf', $seopress_google_analytics_config['cd']['cd_author'] ); $seopress_google_analytics_event['cd_author'] = apply_filters( 'seopress_gtag_cd_author_ev', $seopress_google_analytics_event['cd_author'] ); } } } if ( ! empty( $cd_category_option ) ) { if ( 'none' !== $cd_category_option ) { if ( is_single() && has_category() ) { $categories = get_the_category(); if ( ! empty( $categories ) ) { $get_first_category = esc_html( $categories[0]->name ); } $seopress_google_analytics_config['cd']['cd_categories'] = "'" . $cd_category_option . "': 'cd_categories',"; $seopress_google_analytics_event['cd_categories'] = "gtag('event', '" . __( 'Categories', 'wp-seopress' ) . "', {'cd_categories': '" . $get_first_category . "', 'non_interaction': true});"; $seopress_google_analytics_config['cd']['cd_categories'] = apply_filters( 'seopress_gtag_cd_categories_cf', $seopress_google_analytics_config['cd']['cd_categories'] ); $seopress_google_analytics_event['cd_categories'] = apply_filters( 'seopress_gtag_cd_categories_ev', $seopress_google_analytics_event['cd_categories'] ); } } } if ( ! empty( $cd_tag_option ) && 'none' !== $cd_tag_option ) { if ( is_single() && has_tag() ) { $tags = get_the_tags(); if ( ! empty( $tags ) ) { $seopress_comma_count = count( $tags ); $get_tags = ''; foreach ( $tags as $key => $value ) { $get_tags .= esc_html( $value->name ); if ( $key < $seopress_comma_count - 1 ) { $get_tags .= ', '; } } } $seopress_google_analytics_config['cd']['cd_tags'] = "'" . $cd_tag_option . "': 'cd_tags',"; $seopress_google_analytics_event['cd_tags'] = "gtag('event', '" . __( 'Tags', 'wp-seopress' ) . "', {'cd_tags': '" . $get_tags . "', 'non_interaction': true});"; $seopress_google_analytics_config['cd']['cd_tags'] = apply_filters( 'seopress_gtag_cd_tags_cf', $seopress_google_analytics_config['cd']['cd_tags'] ); $seopress_google_analytics_event['cd_tags'] = apply_filters( 'seopress_gtag_cd_tags_ev', $seopress_google_analytics_event['cd_tags'] ); } } if ( ! empty( $cd_post_type_option ) && 'none' !== $cd_post_type_option ) { if ( is_single() ) { $seopress_google_analytics_config['cd']['cd_cpt'] = "'" . $cd_post_type_option . "': 'cd_cpt',"; $seopress_google_analytics_event['cd_cpt'] = "gtag('event', '" . __( 'Post types', 'wp-seopress' ) . "', {'cd_cpt': '" . get_post_type() . "', 'non_interaction': true});"; $seopress_google_analytics_config['cd']['cd_cpt'] = apply_filters( 'seopress_gtag_cd_cpt_cf', $seopress_google_analytics_config['cd']['cd_cpt'] ); $seopress_google_analytics_event['cd_cpt'] = apply_filters( 'seopress_gtag_cd_cpt_ev', $seopress_google_analytics_event['cd_cpt'] ); } } if ( ! empty( $cd_logged_in_user_option ) && 'none' !== $cd_logged_in_user_option ) { if ( wp_get_current_user()->ID ) { $seopress_google_analytics_config['cd']['cd_logged_in'] = "'" . $cd_logged_in_user_option . "': 'cd_logged_in',"; $seopress_google_analytics_event['cd_logged_in'] = "gtag('event', '" . __( 'Connected users', 'wp-seopress' ) . "', {'cd_logged_in': '" . wp_get_current_user()->ID . "', 'non_interaction': true});"; $seopress_google_analytics_config['cd']['cd_logged_in'] = apply_filters( 'seopress_gtag_cd_logged_in_cf', $seopress_google_analytics_config['cd']['cd_logged_in'] ); $seopress_google_analytics_event['cd_logged_in'] = apply_filters( 'seopress_gtag_cd_logged_in_ev', $seopress_google_analytics_event['cd_logged_in'] ); } } if ( ! empty( $seopress_google_analytics_config['cd']['cd_logged_in'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_cpt'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_tags'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_categories'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_author'] ) || ( ! empty( $seopress_google_analytics_config['cd']['cd_hook'] ) && ! empty( $seopress_google_analytics_event['cd_hook'] ) ) ) { $seopress_google_analytics_config['cd']['cd_end'] = '}, '; } else { $seopress_google_analytics_config['cd']['cd_start'] = ''; } // External links. if ( ! empty( seopress_get_service( 'GoogleAnalyticsOption' )->getLinkTrackingEnable() ) ) { $seopress_google_analytics_click_event['link_tracking'] = "window.addEventListener('load', function () { var links = document.querySelectorAll('a'); for (let i = 0; i < links.length; i++) { links[i].addEventListener('click', function(e) { var n = this.href.includes('" . wp_parse_url( get_home_url(), PHP_URL_HOST ) . "'); if (n == false) { gtag('event', 'click', {'event_category': 'external links','event_label' : this.href}); } }); } }); "; $seopress_google_analytics_click_event['link_tracking'] = apply_filters( 'seopress_gtag_link_tracking_ev', $seopress_google_analytics_click_event['link_tracking'] ); $seopress_google_analytics_html .= $seopress_google_analytics_click_event['link_tracking']; } // Downloads tracking. if ( ! empty( seopress_get_service( 'GoogleAnalyticsOption' )->getDownloadTrackingEnable() ) ) { $download_tracking_option = seopress_get_service( 'GoogleAnalyticsOption' )->getDownloadTracking(); if ( ! empty( $download_tracking_option ) ) { $seopress_google_analytics_click_event['download_tracking'] = "window.addEventListener('load', function () { var donwload_links = document.querySelectorAll('a'); for (let j = 0; j < donwload_links.length; j++) { donwload_links[j].addEventListener('click', function(e) { var down = this.href.match(/.*\.(" . $download_tracking_option . ")(\?.*)?$/); if (down != null) { gtag('event', 'click', {'event_category': 'downloads','event_label' : this.href}); } }); } }); "; $seopress_google_analytics_click_event['download_tracking'] = apply_filters( 'seopress_gtag_download_tracking_ev', $seopress_google_analytics_click_event['download_tracking'] ); $seopress_google_analytics_html .= $seopress_google_analytics_click_event['download_tracking']; } } // Affiliate tracking. if ( ! empty( seopress_get_service( 'GoogleAnalyticsOption' )->getAffiliateTrackingEnable() ) ) { $affiliate_tracking_option = seopress_get_service( 'GoogleAnalyticsOption' )->getAffiliateTracking(); if ( ! empty( $affiliate_tracking_option ) ) { $seopress_google_analytics_click_event['outbound_tracking'] = "window.addEventListener('load', function () { var outbound_links = document.querySelectorAll('a'); for (let k = 0; k < outbound_links.length; k++) { outbound_links[k].addEventListener('click', function(e) { var out = this.href.match(/(?:\/" . $affiliate_tracking_option . "\/)/gi); if (out != null) { gtag('event', 'click', {'event_category': 'outbound/affiliate','event_label' : this.href}); } }); } });"; $seopress_google_analytics_click_event['outbound_tracking'] = apply_filters( 'seopress_gtag_outbound_tracking_ev', $seopress_google_analytics_click_event['outbound_tracking'] ); $seopress_google_analytics_html .= $seopress_google_analytics_click_event['outbound_tracking']; } } // Phone tracking. if ( ! empty( seopress_get_service( 'GoogleAnalyticsOption' )->getPhoneTracking() ) ) { $seopress_google_analytics_click_event['phone_tracking'] = "window.addEventListener('load', function () { var links = document.querySelectorAll('a'); for (let i = 0; i < links.length; i++) { links[i].addEventListener('click', function(e) { var n = this.href.includes('tel:'); if (n === true) { gtag('event', 'click', {'event_category': 'phone','event_label' : this.href.slice(4)}); } }); } });"; $seopress_google_analytics_click_event['phone_tracking'] = apply_filters( 'seopress_gtag_phone_tracking_ev', $seopress_google_analytics_click_event['phone_tracking'] ); $seopress_google_analytics_html .= $seopress_google_analytics_click_event['phone_tracking']; } do_action( 'seopress_ga4_before_sending_data' ); // Send data. $features = ''; if ( ! empty( $seopress_google_analytics_config['cd']['cd_logged_in'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_cpt'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_tags'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_categories'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_author'] ) || ! empty( $seopress_google_analytics_config['cd']['cd_hook'] ) ) { $seopress_google_analytics_config['cd']['cd_start'] = "'custom_map': {"; } if ( ! empty( $seopress_google_analytics_config ) ) { if ( ! empty( $seopress_google_analytics_config['cd']['cd_start'] ) ) { array_unshift( $seopress_google_analytics_config['cd'], $seopress_google_analytics_config['cd']['cd_start'] ); unset( $seopress_google_analytics_config['cd']['cd_start'] ); } $features = ', {'; foreach ( $seopress_google_analytics_config as $key => $feature ) { if ( 'cd' === $key ) { foreach ( $feature as $_key => $cd ) { $features .= $cd; } } else { $features .= $feature; } } $features .= '}'; } } // Measurement ID. if ( '' !== seopress_get_service( 'GoogleAnalyticsOption' )->getGA4() ) { $seopress_gtag_ga4 = "\n gtag('config', '" . seopress_get_service( 'GoogleAnalyticsOption' )->getGA4() . "' " . $features . ');'; $seopress_gtag_ga4 = apply_filters( 'seopress_gtag_ga4', $seopress_gtag_ga4 ); $seopress_google_analytics_html .= $seopress_gtag_ga4; $seopress_google_analytics_html .= "\n"; } // Ads. if ( ! isset( $_COOKIE['seopress-user-consent-close'] ) ) { $ads_options = seopress_get_service( 'GoogleAnalyticsOption' )->getAds(); if ( ! empty( $ads_options ) ) { $seopress_gtag_ads = "\n gtag('config', '" . $ads_options . "');"; $seopress_gtag_ads = apply_filters( 'seopress_gtag_ads', $seopress_gtag_ads ); $seopress_google_analytics_html .= $seopress_gtag_ads; $seopress_google_analytics_html .= "\n"; } $events = ''; if ( ! empty( $seopress_google_analytics_event ) ) { foreach ( $seopress_google_analytics_event as $event ) { $seopress_google_analytics_html .= $event; $seopress_google_analytics_html .= "\n"; } } } $seopress_gtag_before_closing_script = ''; $seopress_gtag_before_closing_script = apply_filters( 'seopress_gtag_before_closing_script', $seopress_gtag_before_closing_script ); if ( ! empty( $seopress_gtag_before_closing_script ) ) { $seopress_google_analytics_html .= $seopress_gtag_before_closing_script; } $seopress_google_analytics_html .= '</script>'; $seopress_google_analytics_html .= "\n"; $seopress_google_analytics_html = apply_filters( 'seopress_gtag_html', $seopress_google_analytics_html ); if ( true === $echo ) { echo $seopress_google_analytics_html; } else { return $seopress_google_analytics_html; } } } add_action( 'seopress_google_analytics_html', 'seopress_google_analytics_js', 10, 1 ); /** * Google analytics js arguments * * @return void */ function seopress_google_analytics_js_arguments() { $echo = true; do_action( 'seopress_google_analytics_html', $echo ); } /** * Custom tracking hook * * @return void */ function seopress_custom_tracking_hook() { $data['custom'] = ''; $data['custom'] = apply_filters( 'seopress_custom_tracking', $data['custom'] ); echo $data['custom']; } /** * Build custom code after body tag opening * * @param bool $echo Echo. * * @return void */ function seopress_google_analytics_body_code( $echo ) { $seopress_html_body = seopress_get_service( 'GoogleAnalyticsOption' )->getOtherTrackingBody(); if ( empty( $seopress_html_body ) || ! $seopress_html_body ) { return; } if ( 'none' === $seopress_html_body ) { return; } $seopress_html_body = apply_filters( 'seopress_custom_body_tracking', $seopress_html_body ); if ( true === $echo ) { echo "\n" . $seopress_html_body; } else { return "\n" . $seopress_html_body; } } add_action( 'seopress_custom_body_tracking_html', 'seopress_google_analytics_body_code', 10, 1 ); /** * Custom tracking body hook * * @return void */ function seopress_custom_tracking_body_hook() { $echo = true; do_action( 'seopress_custom_body_tracking_html', $echo ); } /** * Build custom code before body tag closing * * @param bool $echo Echo. * * @return void */ function seopress_google_analytics_footer_code( $echo ) { $seopress_html_footer = seopress_get_service( 'GoogleAnalyticsOption' )->getOtherTrackingFooter(); if ( empty( $seopress_html_footer ) || ! $seopress_html_footer ) { return; } if ( 'none' === $seopress_html_footer ) { return; } $seopress_html_footer = apply_filters( 'seopress_custom_footer_tracking', $seopress_html_footer ); if ( true === $echo ) { echo "\n" . $seopress_html_footer; } else { return "\n" . $seopress_html_footer; } } add_action( 'seopress_custom_footer_tracking_html', 'seopress_google_analytics_footer_code', 10, 1 ); /** * Custom tracking footer hook * * @return void */ function seopress_custom_tracking_footer_hook() { $echo = true; do_action( 'seopress_custom_footer_tracking_html', $echo ); } /** * Build custom code in head * * @param bool $echo Echo. * * @return void */ function seopress_google_analytics_head_code( $echo ) { $seopress_html_head = seopress_get_service( 'GoogleAnalyticsOption' )->getOtherTracking(); if ( empty( $seopress_html_head ) || ! $seopress_html_head ) { return; } if ( 'none' === $seopress_html_head ) { return; } $seopress_html_head = apply_filters( 'seopress_gtag_after_additional_tracking_html', $seopress_html_head ); if ( true === $echo ) { echo "\n" . $seopress_html_head; } else { return "\n" . $seopress_html_head; } } add_action( 'seopress_custom_head_tracking_html', 'seopress_google_analytics_head_code', 10, 1 ); /** * Custom tracking head hook * * @return void */ function seopress_custom_tracking_head_hook() { $echo = true; do_action( 'seopress_custom_head_tracking_html', $echo ); }