PluginProbe
Wp Tracking Codes / trunk
Wp Tracking Codes vtrunk
trunk 1.0 1.0.1 1.0.2 1.0.3 1.0.4 1.1.0 1.1.0, 1.10.0 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3
wp-tracking-codes / wp-tracking-codes.php

wp-tracking-codes.php in Wp Tracking Codes trunk, at wp-tracking-codes.php

217 lines 7.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Wp Tracking Codes
4 * Plugin URI: https://wordpress.org/plugins/wp-tracking-codes/
5 * Description: The tracking codes in one place. Support: GTM, GA4 Global Tag, ADS Remarketing Global Tag, Google Merchant Customer Reviews for WooCommerce, Facebook.
6 * Version: 1.10.0
7 * Requires at least: 5.2.0
8 * Tested up to: 7.0
9 * Requires PHP: 7.4
10 * Author: Array.codes
11 * Author URI: https://array.codes
12 * Developer: Heitor Sousa
13 * Developer URI: https://array.codes/
14 * Domain Path: /languages
15 * Text Domain: wp-tracking-codes
16 *
17 * WC requires at least: 4.8.0
18 * WC tested up to: 10.9.0
19 *
20 * License: GPLv2 or later
21 * License URI: http://www.gnu.org/licenses/gpl-2.0.html
22 *
23 */
24 if(!defined('ABSPATH')){
25 exit;
26 }
27
28 if(!class_exists('Wp_Tracking_Codes')):
29 class Wp_Tracking_Codes {
30 /**
31 * Plugin version.
32 *
33 * @var string
34 */
35 const VERSION = '1.10.0';
36 /**
37 * Instance of this class.
38 *
39 * @var object
40 */
41 protected static $instance = null;
42 /**
43 * Options
44 *
45 * @var array $options Options
46 */
47 private $options = array();
48 /**
49 * Initialize the plugin public actions.
50 */
51 private function __construct() {
52 // Load the instalation hook
53 register_activation_hook( __FILE__, 'wp_tracking_codes_install' );
54 // Load plugin text domain.
55 add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
56 //Load includes
57 $this->includes();
58 //Load Tracking Analytics
59 add_action( 'wp_head', array( $this, 'hook_analytics_4' ) );
60 //Load Tracking Analytics Remarketing
61 add_action( 'wp_footer', array( $this, 'hook_analytics_remarketing' ) );
62 //Load Tracking Facebook ID
63 add_action( 'wp_head', array( $this, 'hook_facebook_pixel_code' ) );
64 //Load Tracking Google Tag Manager in Head and after Body
65 add_action('wp_head', array($this, 'hook_google_tag_manager_head'));
66 add_filter('wp_body_open', array( $this, 'hook_google_tag_manager_body' ),0);
67 add_action( 'before_woocommerce_init', array( $this, 'declare_compatibility_hpos') );
68 }
69 /**
70 * Return an instance of this class.
71 *
72 * @return object A single instance of this class.
73 */
74 public static function get_instance() {
75 // If the single instance hasn't been set, set it now.
76 if ( null == self::$instance ) {
77 self::$instance = new self;
78 }
79
80 return self::$instance;
81 }
82
83 /**
84 * Get templates path.
85 *
86 * @return string
87 */
88 public static function get_templates_path() {
89 return plugin_dir_path( __FILE__ ) . 'templates/';
90 }
91
92 /**
93 * Load the plugin text domain for translation.
94 */
95 public function load_plugin_textdomain() {
96 load_plugin_textdomain( 'wp-tracking-codes', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
97 }
98
99 /**
100 * Instalation Plugin
101 */
102 public function wp_tracking_codes_install() {
103 // Trigger our function that registers the custom post type
104 pluginprefix_setup_post_types();
105 // Clear the permalinks after the post type has been registered
106 flush_rewrite_rules();
107 }
108 /**
109 * Includes
110 */
111 private function includes() {
112 include_once 'includes/class-register-codes.php';
113 include_once 'includes/class-render-google-merchant.php';
114 }
115
116 public function hook_analytics_4(){
117 $this->options = get_option( 'tracking_option' );
118 if( isset( $this->options['analytics_4'] ) && !empty( $this->options['analytics_4'] ) ){
119 $analytics_4 = $this->options['analytics_4'];
120 printf("
121 <!-- Global site tag (gtag.js) - Google Analytics -->
122 <script async src='https://www.googletagmanager.com/gtag/js?id=%s'></script>
123 <script>
124 window.dataLayer = window.dataLayer || [];
125 function gtag(){dataLayer.push(arguments);}
126 gtag('js', new Date());
127
128 gtag('config', '%s');
129 </script>
130 ", esc_attr($analytics_4), esc_attr($analytics_4));
131 }
132
133 }
134
135 public function hook_analytics_remarketing() {
136 $this->options = get_option( 'tracking_option' );
137 if( isset( $this->options['analytics_remarketing'] ) && !empty( $this->options['analytics_remarketing'] ) ){
138 $analytics_remarketing = $this->options['analytics_remarketing'];
139 printf("
140 <!-- Global site tag (gtag.js) - Google Ads -->
141 <script async src='https://www.googletagmanager.com/gtag/js?id=%s'></script>
142 <script>
143 window.dataLayer = window.dataLayer || [];
144 function gtag(){dataLayer.push(arguments);}
145 gtag('js', new Date());
146
147 gtag('config', '%s');
148 </script>
149 ", esc_attr($analytics_remarketing), esc_attr($analytics_remarketing));
150 }
151 }
152
153 public function hook_facebook_pixel_code() {
154 $this->options = get_option( 'tracking_option' );
155 if ( isset( $this->options['facebook_pixel_code'] ) && ! empty( $this->options['facebook_pixel_code'] ) ){
156 $facebook_pixel_code = $this->options['facebook_pixel_code'];
157 printf( "
158 <!-- Facebook Pixel Code -->
159 <script>
160 !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
161 n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
162 n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
163 t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
164 document,'script','https://connect.facebook.net/en_US/fbevents.js');
165
166 fbq('init', '%1\$s');
167 fbq('track', 'PageView');</script>
168 <noscript><img height='1' width='1' style='display:none'
169 src='https://www.facebook.com/tr?id=%1\$s&ev=PageView&noscript=1'
170 /></noscript>
171 <!-- End Facebook Pixel Code -->
172 ", esc_attr($facebook_pixel_code) );
173 }
174 }
175
176 public function hook_google_tag_manager_head(){
177 $this->options = get_option('tracking_option');
178 if ( isset( $this->options['google_tag_manager'] ) && !empty($this->options['google_tag_manager'])){
179 $google_tag_manager = $this->options['google_tag_manager'];
180 printf(
181 "<!-- Google Tag Manager -->
182 <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
183 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
184 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
185 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
186 })(window,document,'script','dataLayer','%s');</script>
187 <!-- End Google Tag Manager -->",
188 esc_attr( $google_tag_manager )
189 );
190 }
191
192 }
193
194 public function hook_google_tag_manager_body($classes){
195 $this->options = get_option( 'tracking_option' );
196 if( isset( $this->options['google_tag_manager'] ) && !empty( $this->options['google_tag_manager'] ) ){
197 $google_tag_manager = $this->options['google_tag_manager'];
198 printf("<!-- Google Tag Manager (noscript) -->
199 <noscript><iframe src='https://www.googletagmanager.com/ns.html?id=%s' height='0' width='0' style='display:none;visibility:hidden'></iframe></noscript>
200 <!-- End Google Tag Manager (noscript) -->",
201 esc_attr( $google_tag_manager )
202 );
203 }
204 }
205
206 /**
207 * Declare_compatibility_hpos
208 */
209 public function declare_compatibility_hpos() {
210 if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
211 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', 'wp-tracking-codes/wp-tracking-codes.php', true );
212 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'cart_checkout_blocks', 'wp-tracking-codes/wp-tracking-codes.php', true );
213 }
214 }
215 }
216 add_action( 'plugins_loaded', array( 'Wp_Tracking_Codes', 'get_instance' ) );
217 endif;