Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Modules
/
Analytics
:
AMP_Tag.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * Class Google\Site_Kit\Modules\Analytics\AMP_Tag * * @package Google\Site_Kit\Modules\Analytics * @copyright 2021 Google LLC * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * @link https://sitekit.withgoogle.com */ namespace Google\Site_Kit\Modules\Analytics; use Google\Site_Kit\Core\Modules\Tags\Module_AMP_Tag; use Google\Site_Kit\Core\Util\Method_Proxy_Trait; /** * Class for AMP tag. * * @since 1.24.0 * @access private * @ignore */ class AMP_Tag extends Module_AMP_Tag implements Tag_Interface { use Method_Proxy_Trait; /** * Home domain name. * * @since 1.24.0 * @var string */ private $home_domain; /** * Ads conversion ID. * * @since 1.32.0 * @var string */ private $ads_conversion_id; /** * Sets the current home domain. * * @since 1.24.0 * * @param string $domain Domain name. */ public function set_home_domain( $domain ) { $this->home_domain = $domain; } /** * Sets whether or not to anonymize IP addresses. * * @since 1.32.0 * * @param bool $anonymize_ip Whether to anonymize IP addresses or not. */ public function set_anonymize_ip( $anonymize_ip ) { // Data from AMP documents is always IP anonymized. // See https://support.google.com/analytics/answer/6343176. } /** * Sets the ads conversion ID. * * @since 1.32.0 * * @param string $ads_conversion_id Ads ID. */ public function set_ads_conversion_id( $ads_conversion_id ) { $this->ads_conversion_id = $ads_conversion_id; } /** * Registers tag hooks. * * @since 1.24.0 */ public function register() { $render = $this->get_method_proxy_once( 'render' ); // Which actions are run depends on the version of the AMP Plugin // (https://amp-wp.org/) available. Version >=1.3 exposes a // new, `amp_print_analytics` action. // For all AMP modes, AMP plugin version >=1.3. add_action( 'amp_print_analytics', $render ); // For AMP Standard and Transitional, AMP plugin version <1.3. add_action( 'wp_footer', $render, 20 ); // For AMP Reader, AMP plugin version <1.3. add_action( 'amp_post_template_footer', $render, 20 ); // For Web Stories plugin. add_action( 'web_stories_print_analytics', $render ); // Load amp-analytics component for AMP Reader. $this->enqueue_amp_reader_component_script( 'amp-analytics', 'https://cdn.ampproject.org/v0/amp-analytics-0.1.js' ); $this->do_init_tag_action(); } /** * Outputs gtag <amp-analytics> tag. * * @since 1.24.0 */ protected function render() { $config = $this->get_tag_config(); if ( ! empty( $this->ads_conversion_id ) ) { $config[ $this->ads_conversion_id ] = array( 'groups' => 'default', ); } $gtag_amp_opt = array( 'optoutElementId' => '__gaOptOutExtension', 'vars' => array( 'gtag_id' => $this->tag_id, 'config' => $config, ), ); /** * Filters the gtag configuration options for the amp-analytics tag. * * You can use the {@see 'googlesitekit_gtag_opt'} filter to do the same for gtag in non-AMP. * * @since 1.24.0 * @see https://developers.google.com/gtagjs/devguide/amp * * @param array $gtag_amp_opt gtag config options for AMP. */ $gtag_amp_opt_filtered = apply_filters( 'googlesitekit_amp_gtag_opt', $gtag_amp_opt ); // Ensure gtag_id is set to the correct value. if ( ! is_array( $gtag_amp_opt_filtered ) ) { $gtag_amp_opt_filtered = $gtag_amp_opt; } if ( ! isset( $gtag_amp_opt_filtered['vars'] ) || ! is_array( $gtag_amp_opt_filtered['vars'] ) ) { $gtag_amp_opt_filtered['vars'] = $gtag_amp_opt['vars']; } printf( "\n<!-- %s -->\n", esc_html__( 'Google Analytics AMP snippet added by Site Kit', 'google-site-kit' ) ); printf( '<amp-analytics type="gtag" data-credentials="include"%s><script type="application/json">%s</script></amp-analytics>', $this->get_tag_blocked_on_consent_attribute(), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped wp_json_encode( $gtag_amp_opt_filtered ) ); printf( "\n<!-- %s -->\n", esc_html__( 'End Google Analytics AMP snippet added by Site Kit', 'google-site-kit' ) ); } /** * Gets the tag config as used in the gtag data vars. * * @return array[] */ protected function get_tag_config() { return array( $this->tag_id => array( 'groups' => 'default', 'linker' => array( 'domains' => array( $this->home_domain ), ), ), ); } }