Version Description
Release Date: September 4th, 2014
- Bugfixes:
- Fixes error in link parsing that would cause all sorts of display errors.
Download this release
Release Info
Developer | joostdevalk |
Plugin | Google Analytics for WordPress by MonsterInsights |
Version | 5.0.5 |
Comparing to | |
See all releases |
Code changes from version 5.0.4 to 5.0.5
- frontend/class-frontend.php +14 -10
- frontend/class-ga-js.php +24 -27
- frontend/class-universal.php +33 -32
- googleanalytics.php +2 -2
- readme.txt +7 -1
frontend/class-frontend.php
CHANGED
@@ -72,16 +72,20 @@ if ( ! class_exists( 'Yoast_GA_Frontend' ) ) {
|
|
72 |
$domainPatternUS = "/[^\.\/]+\.[^\.\/]+$/";
|
73 |
$domainPatternUK = "/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/";
|
74 |
|
75 |
-
preg_match( $hostPattern, $uri, $matches );
|
76 |
-
$
|
77 |
-
|
78 |
-
preg_match(
|
79 |
-
|
80 |
-
|
81 |
-
|
|
|
82 |
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
85 |
} else {
|
86 |
return false;
|
87 |
}
|
@@ -130,7 +134,7 @@ if ( ! class_exists( 'Yoast_GA_Frontend' ) ) {
|
|
130 |
$extension = substr( strrchr( $original_url, '.' ), 1 );
|
131 |
|
132 |
// Break out immediately if the link is not an http or https link.
|
133 |
-
if ( $protocol
|
134 |
$type = null;
|
135 |
} else {
|
136 |
if ( ( $protocol == 'mailto' ) ) {
|
72 |
$domainPatternUS = "/[^\.\/]+\.[^\.\/]+$/";
|
73 |
$domainPatternUK = "/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/";
|
74 |
|
75 |
+
$matching = preg_match( $hostPattern, $uri, $matches );
|
76 |
+
if ( $matching ) {
|
77 |
+
$host = $matches[2];
|
78 |
+
if ( preg_match( "/.*\..*\..*\..*$/", $host ) ) {
|
79 |
+
preg_match( $domainPatternUK, $host, $matches );
|
80 |
+
} else {
|
81 |
+
preg_match( $domainPatternUS, $host, $matches );
|
82 |
+
}
|
83 |
|
84 |
+
if ( isset( $matches[0] ) ) {
|
85 |
+
return array( "domain" => $matches[0], "host" => $host );
|
86 |
+
} else {
|
87 |
+
return false;
|
88 |
+
}
|
89 |
} else {
|
90 |
return false;
|
91 |
}
|
134 |
$extension = substr( strrchr( $original_url, '.' ), 1 );
|
135 |
|
136 |
// Break out immediately if the link is not an http or https link.
|
137 |
+
if ( $protocol !== 'http' && $protocol !== 'https' && $protocol !== 'mailto' ) {
|
138 |
$type = null;
|
139 |
} else {
|
140 |
if ( ( $protocol == 'mailto' ) ) {
|
frontend/class-ga-js.php
CHANGED
@@ -13,11 +13,14 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
13 |
|
14 |
add_action( 'wp_head', array( $this, 'tracking' ), 8 );
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
21 |
}
|
22 |
|
23 |
/**
|
@@ -26,18 +29,10 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
26 |
* @todo, add the tracking code and remove this test output
|
27 |
*/
|
28 |
public function tracking() {
|
29 |
-
global $wp_query
|
30 |
-
|
31 |
-
// Make sure $current_user is filled.
|
32 |
-
get_currentuserinfo();
|
33 |
|
34 |
$options = parent::$options['ga_general'];
|
35 |
-
$gaq_push = array();
|
36 |
|
37 |
-
/**
|
38 |
-
* The order of custom variables is very, very important: custom vars should always take up the same slot to make analysis easy.
|
39 |
-
*/
|
40 |
-
$customvarslot = 1;
|
41 |
if ( parent::do_tracking() && ! is_preview() ) {
|
42 |
$gaq_push = array();
|
43 |
|
@@ -131,11 +126,19 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
131 |
/**
|
132 |
* Ouput tracking link
|
133 |
*
|
134 |
-
* @param $
|
|
|
135 |
*
|
136 |
* @return mixed
|
137 |
*/
|
138 |
-
private function output_parse_link( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
$onclick = NULL;
|
140 |
$options = $this->get_options();
|
141 |
$options = $options['ga_general'];
|
@@ -163,15 +166,9 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
163 |
|
164 |
$onclick = "_gaq.push(['_trackEvent', '" . esc_attr ( $link['category'] ) . "-" . esc_attr ( $label ) . "', '" . esc_attr ( $full_url ) . "', '" . esc_attr ( strip_tags( $link['link_text'] ) ) . "']);";
|
165 |
|
166 |
-
break;
|
167 |
-
case 'internal':
|
168 |
-
$onclick = NULL;
|
169 |
-
|
170 |
break;
|
171 |
case 'outbound':
|
172 |
-
|
173 |
-
$onclick = "_gaq.push(['_trackEvent', '" . esc_attr ( $link['category'] ) . "', '" . esc_attr ( $full_url ) . "', '" . esc_attr ( strip_tags( $link['link_text'] ) ) . "']);";
|
174 |
-
}
|
175 |
|
176 |
break;
|
177 |
}
|
@@ -189,7 +186,7 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
189 |
* @return mixed
|
190 |
*/
|
191 |
public function parse_article_link( $matches ) {
|
192 |
-
return $this->output_parse_link(
|
193 |
}
|
194 |
|
195 |
/**
|
@@ -200,7 +197,7 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
200 |
* @return mixed
|
201 |
*/
|
202 |
public function parse_comment_link( $matches ) {
|
203 |
-
return $this->output_parse_link(
|
204 |
}
|
205 |
|
206 |
/**
|
@@ -211,7 +208,7 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
211 |
* @return mixed
|
212 |
*/
|
213 |
public function parse_widget_link( $matches ) {
|
214 |
-
return $this->output_parse_link(
|
215 |
}
|
216 |
|
217 |
/**
|
@@ -222,7 +219,7 @@ if ( ! class_exists( 'Yoast_GA_JS' ) ) {
|
|
222 |
* @return mixed
|
223 |
*/
|
224 |
public function parse_nav_menu( $matches ) {
|
225 |
-
return $this->output_parse_link(
|
226 |
}
|
227 |
|
228 |
/**
|
13 |
|
14 |
add_action( 'wp_head', array( $this, 'tracking' ), 8 );
|
15 |
|
16 |
+
$options = parent::$options['ga_general'];
|
17 |
+
if ( $options['track_outbound'] == 1 ) {
|
18 |
+
// Check for outbound
|
19 |
+
add_filter( 'the_content', array( $this, 'the_content' ), 99 );
|
20 |
+
add_filter( 'widget_text', array( $this, 'widget_content' ), 99 );
|
21 |
+
add_filter( 'the_excerpt', array( $this, 'the_content' ), 99 );
|
22 |
+
add_filter( 'comment_text', array( $this, 'comment_text' ), 99 );
|
23 |
+
}
|
24 |
}
|
25 |
|
26 |
/**
|
29 |
* @todo, add the tracking code and remove this test output
|
30 |
*/
|
31 |
public function tracking() {
|
32 |
+
global $wp_query;
|
|
|
|
|
|
|
33 |
|
34 |
$options = parent::$options['ga_general'];
|
|
|
35 |
|
|
|
|
|
|
|
|
|
36 |
if ( parent::do_tracking() && ! is_preview() ) {
|
37 |
$gaq_push = array();
|
38 |
|
126 |
/**
|
127 |
* Ouput tracking link
|
128 |
*
|
129 |
+
* @param string $label
|
130 |
+
* @param array $matches
|
131 |
*
|
132 |
* @return mixed
|
133 |
*/
|
134 |
+
private function output_parse_link( $label, $matches ) {
|
135 |
+
$link = $this->get_target( $label, $matches );
|
136 |
+
|
137 |
+
// bail early for links that we can't handle
|
138 |
+
if ( is_null( $link['type'] ) || 'internal' === $link['type'] ) {
|
139 |
+
return $matches[0];
|
140 |
+
}
|
141 |
+
|
142 |
$onclick = NULL;
|
143 |
$options = $this->get_options();
|
144 |
$options = $options['ga_general'];
|
166 |
|
167 |
$onclick = "_gaq.push(['_trackEvent', '" . esc_attr ( $link['category'] ) . "-" . esc_attr ( $label ) . "', '" . esc_attr ( $full_url ) . "', '" . esc_attr ( strip_tags( $link['link_text'] ) ) . "']);";
|
168 |
|
|
|
|
|
|
|
|
|
169 |
break;
|
170 |
case 'outbound':
|
171 |
+
$onclick = "_gaq.push(['_trackEvent', '" . esc_attr ( $link['category'] ) . "', '" . esc_attr ( $full_url ) . "', '" . esc_attr ( strip_tags( $link['link_text'] ) ) . "']);";
|
|
|
|
|
172 |
|
173 |
break;
|
174 |
}
|
186 |
* @return mixed
|
187 |
*/
|
188 |
public function parse_article_link( $matches ) {
|
189 |
+
return $this->output_parse_link( 'outbound-article', $matches );
|
190 |
}
|
191 |
|
192 |
/**
|
197 |
* @return mixed
|
198 |
*/
|
199 |
public function parse_comment_link( $matches ) {
|
200 |
+
return $this->output_parse_link( 'outbound-comment', $matches );
|
201 |
}
|
202 |
|
203 |
/**
|
208 |
* @return mixed
|
209 |
*/
|
210 |
public function parse_widget_link( $matches ) {
|
211 |
+
return $this->output_parse_link( 'outbound-widget', $matches );
|
212 |
}
|
213 |
|
214 |
/**
|
219 |
* @return mixed
|
220 |
*/
|
221 |
public function parse_nav_menu( $matches ) {
|
222 |
+
return $this->output_parse_link( 'outbound-menu', $matches );
|
223 |
}
|
224 |
|
225 |
/**
|
frontend/class-universal.php
CHANGED
@@ -9,15 +9,18 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
9 |
public $link_regex;
|
10 |
|
11 |
public function __construct() {
|
12 |
-
$this->link_regex = '
|
13 |
|
14 |
add_action( 'wp_head', array( $this, 'tracking' ), 8 );
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
21 |
}
|
22 |
|
23 |
/**
|
@@ -26,18 +29,10 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
26 |
* @todo, add the tracking code and remove this test output
|
27 |
*/
|
28 |
public function tracking() {
|
29 |
-
global $wp_query
|
30 |
-
|
31 |
-
// Make sure $current_user is filled.
|
32 |
-
get_currentuserinfo();
|
33 |
|
34 |
$options = parent::$options['ga_general'];
|
35 |
-
$gaq_push = array();
|
36 |
|
37 |
-
/**
|
38 |
-
* The order of custom variables is very, very important: custom vars should always take up the same slot to make analysis easy.
|
39 |
-
*/
|
40 |
-
$customvarslot = 1;
|
41 |
if ( $this->do_tracking() && ! is_preview() ) {
|
42 |
$gaq_push = array();
|
43 |
|
@@ -123,8 +118,7 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
123 |
} else {
|
124 |
require( GAWP_PATH . 'frontend/views/tracking_universal.php' );
|
125 |
}
|
126 |
-
}
|
127 |
-
else{
|
128 |
require( GAWP_PATH . 'frontend/views/tracking_usergroup.php' );
|
129 |
}
|
130 |
}
|
@@ -132,12 +126,20 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
132 |
/**
|
133 |
* Ouput tracking link
|
134 |
*
|
135 |
-
* @param $
|
|
|
136 |
*
|
137 |
* @return mixed
|
138 |
*/
|
139 |
-
private function output_parse_link( $
|
140 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
$options = $this->get_options();
|
142 |
$options = $options['ga_general'];
|
143 |
$full_url = $this->make_full_url( $link );
|
@@ -162,22 +164,19 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
162 |
$label = 'int';
|
163 |
}
|
164 |
|
165 |
-
$onclick = "ga('send', 'event', '" . esc_attr( $link['category'] ) . "-" .esc_attr
|
166 |
-
|
167 |
-
break;
|
168 |
-
case 'internal':
|
169 |
-
$onclick = NULL;
|
170 |
|
171 |
break;
|
172 |
case 'outbound':
|
173 |
if ( $options['track_outbound'] == 1 ) {
|
174 |
-
$onclick = "ga('send', 'event', '" . esc_attr
|
175 |
}
|
176 |
|
177 |
break;
|
178 |
}
|
179 |
|
180 |
$link['link_attributes'] = $this->output_add_onclick( $link['link_attributes'], $onclick );
|
|
|
181 |
return '<a href="' . $full_url . '" ' . $link['link_attributes'] . '>' . $link['link_text'] . '</a>';
|
182 |
|
183 |
}
|
@@ -190,7 +189,7 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
190 |
* @return mixed
|
191 |
*/
|
192 |
public function parse_article_link( $matches ) {
|
193 |
-
return $this->output_parse_link(
|
194 |
}
|
195 |
|
196 |
/**
|
@@ -201,7 +200,7 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
201 |
* @return mixed
|
202 |
*/
|
203 |
public function parse_comment_link( $matches ) {
|
204 |
-
return $this->output_parse_link(
|
205 |
}
|
206 |
|
207 |
/**
|
@@ -212,7 +211,7 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
212 |
* @return mixed
|
213 |
*/
|
214 |
public function parse_widget_link( $matches ) {
|
215 |
-
return $this->output_parse_link(
|
216 |
}
|
217 |
|
218 |
/**
|
@@ -223,7 +222,7 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
223 |
* @return mixed
|
224 |
*/
|
225 |
public function parse_nav_menu( $matches ) {
|
226 |
-
return $this->output_parse_link(
|
227 |
}
|
228 |
|
229 |
/**
|
@@ -269,8 +268,9 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
269 |
* @return mixed
|
270 |
*/
|
271 |
public function nav_menu( $text ) {
|
272 |
-
if ( ! $this->do_tracking() )
|
273 |
return $text;
|
|
|
274 |
|
275 |
if ( ! is_feed() ) {
|
276 |
$text = preg_replace_callback( $this->link_regex, array( $this, 'parse_nav_menu' ), $text );
|
@@ -287,8 +287,9 @@ if ( ! class_exists( 'Yoast_GA_Universal' ) ) {
|
|
287 |
* @return mixed
|
288 |
*/
|
289 |
public function comment_text( $text ) {
|
290 |
-
if ( ! $this->do_tracking() )
|
291 |
return $text;
|
|
|
292 |
|
293 |
if ( ! is_feed() ) {
|
294 |
$text = preg_replace_callback( $this->link_regex, array( $this, 'parse_comment_link' ), $text );
|
9 |
public $link_regex;
|
10 |
|
11 |
public function __construct() {
|
12 |
+
$this->link_regex = '`<a (.*?)href=[\'\"](.*?):/*([^\'\"]+)[\'\"](.*?)>(.*?)</a>`i';
|
13 |
|
14 |
add_action( 'wp_head', array( $this, 'tracking' ), 8 );
|
15 |
|
16 |
+
$options = parent::$options['ga_general'];
|
17 |
+
if ( $options['track_outbound'] == 1 ) {
|
18 |
+
// Check for outbound option
|
19 |
+
add_filter( 'the_content', array( $this, 'the_content' ), 99 );
|
20 |
+
add_filter( 'widget_text', array( $this, 'widget_content' ), 99 );
|
21 |
+
add_filter( 'the_excerpt', array( $this, 'the_content' ), 99 );
|
22 |
+
add_filter( 'comment_text', array( $this, 'comment_text' ), 99 );
|
23 |
+
}
|
24 |
}
|
25 |
|
26 |
/**
|
29 |
* @todo, add the tracking code and remove this test output
|
30 |
*/
|
31 |
public function tracking() {
|
32 |
+
global $wp_query;
|
|
|
|
|
|
|
33 |
|
34 |
$options = parent::$options['ga_general'];
|
|
|
35 |
|
|
|
|
|
|
|
|
|
36 |
if ( $this->do_tracking() && ! is_preview() ) {
|
37 |
$gaq_push = array();
|
38 |
|
118 |
} else {
|
119 |
require( GAWP_PATH . 'frontend/views/tracking_universal.php' );
|
120 |
}
|
121 |
+
} else {
|
|
|
122 |
require( GAWP_PATH . 'frontend/views/tracking_usergroup.php' );
|
123 |
}
|
124 |
}
|
126 |
/**
|
127 |
* Ouput tracking link
|
128 |
*
|
129 |
+
* @param string $label
|
130 |
+
* @param array $matches
|
131 |
*
|
132 |
* @return mixed
|
133 |
*/
|
134 |
+
private function output_parse_link( $label, $matches ) {
|
135 |
+
$link = $this->get_target( $label, $matches );
|
136 |
+
|
137 |
+
// bail early for links that we can't handle
|
138 |
+
if ( is_null( $link['type'] ) || 'internal' === $link['type'] ) {
|
139 |
+
return $matches[0];
|
140 |
+
}
|
141 |
+
|
142 |
+
$onclick = null;
|
143 |
$options = $this->get_options();
|
144 |
$options = $options['ga_general'];
|
145 |
$full_url = $this->make_full_url( $link );
|
164 |
$label = 'int';
|
165 |
}
|
166 |
|
167 |
+
$onclick = "ga('send', 'event', '" . esc_attr( $link['category'] ) . "-" . esc_attr( $label ) . "', '" . esc_attr( $full_url ) . "', '" . esc_attr( strip_tags( $link['link_text'] ) ) . "');";
|
|
|
|
|
|
|
|
|
168 |
|
169 |
break;
|
170 |
case 'outbound':
|
171 |
if ( $options['track_outbound'] == 1 ) {
|
172 |
+
$onclick = "ga('send', 'event', '" . esc_attr( $link['category'] ) . "', '" . esc_attr( $full_url ) . "', '" . esc_attr( strip_tags( $link['link_text'] ) ) . "');";
|
173 |
}
|
174 |
|
175 |
break;
|
176 |
}
|
177 |
|
178 |
$link['link_attributes'] = $this->output_add_onclick( $link['link_attributes'], $onclick );
|
179 |
+
|
180 |
return '<a href="' . $full_url . '" ' . $link['link_attributes'] . '>' . $link['link_text'] . '</a>';
|
181 |
|
182 |
}
|
189 |
* @return mixed
|
190 |
*/
|
191 |
public function parse_article_link( $matches ) {
|
192 |
+
return $this->output_parse_link( 'outbound-article', $matches );
|
193 |
}
|
194 |
|
195 |
/**
|
200 |
* @return mixed
|
201 |
*/
|
202 |
public function parse_comment_link( $matches ) {
|
203 |
+
return $this->output_parse_link( 'outbound-comment', $matches );
|
204 |
}
|
205 |
|
206 |
/**
|
211 |
* @return mixed
|
212 |
*/
|
213 |
public function parse_widget_link( $matches ) {
|
214 |
+
return $this->output_parse_link( 'outbound-widget', $matches );
|
215 |
}
|
216 |
|
217 |
/**
|
222 |
* @return mixed
|
223 |
*/
|
224 |
public function parse_nav_menu( $matches ) {
|
225 |
+
return $this->output_parse_link( 'outbound-menu', $matches );
|
226 |
}
|
227 |
|
228 |
/**
|
268 |
* @return mixed
|
269 |
*/
|
270 |
public function nav_menu( $text ) {
|
271 |
+
if ( ! $this->do_tracking() ) {
|
272 |
return $text;
|
273 |
+
}
|
274 |
|
275 |
if ( ! is_feed() ) {
|
276 |
$text = preg_replace_callback( $this->link_regex, array( $this, 'parse_nav_menu' ), $text );
|
287 |
* @return mixed
|
288 |
*/
|
289 |
public function comment_text( $text ) {
|
290 |
+
if ( ! $this->do_tracking() ) {
|
291 |
return $text;
|
292 |
+
}
|
293 |
|
294 |
if ( ! is_feed() ) {
|
295 |
$text = preg_replace_callback( $this->link_regex, array( $this, 'parse_comment_link' ), $text );
|
googleanalytics.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Google Analytics by Yoast
|
|
4 |
Plugin URI: https://yoast.com/wordpress/plugins/google-analytics/#utm_source=wordpress&utm_medium=plugin&utm_campaign=wpgaplugin&utm_content=v504
|
5 |
Description: This plugin makes it simple to add Google Analytics to your WordPress blog, adding lots of features, eg. error page, search result and automatic clickout and download tracking.
|
6 |
Author: Team Yoast
|
7 |
-
Version: 5.0.
|
8 |
Requires at least: 3.8
|
9 |
Author URI: https://yoast.com/
|
10 |
License: GPL v3
|
@@ -30,7 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
30 |
|
31 |
// This plugin was originally based on Rich Boakes' Analytics plugin: http://boakes.org/analytics, but has since been rewritten and refactored multiple times.
|
32 |
|
33 |
-
define( "GAWP_VERSION", '5.0.
|
34 |
|
35 |
define( "GAWP_FILE", __FILE__ );
|
36 |
|
4 |
Plugin URI: https://yoast.com/wordpress/plugins/google-analytics/#utm_source=wordpress&utm_medium=plugin&utm_campaign=wpgaplugin&utm_content=v504
|
5 |
Description: This plugin makes it simple to add Google Analytics to your WordPress blog, adding lots of features, eg. error page, search result and automatic clickout and download tracking.
|
6 |
Author: Team Yoast
|
7 |
+
Version: 5.0.5
|
8 |
Requires at least: 3.8
|
9 |
Author URI: https://yoast.com/
|
10 |
License: GPL v3
|
30 |
|
31 |
// This plugin was originally based on Rich Boakes' Analytics plugin: http://boakes.org/analytics, but has since been rewritten and refactored multiple times.
|
32 |
|
33 |
+
define( "GAWP_VERSION", '5.0.5' );
|
34 |
|
35 |
define( "GAWP_FILE", __FILE__ );
|
36 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://yoast.com/donate/
|
|
4 |
Tags: analytics, google analytics, statistics, tracking, stats, google, yoast
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 4.0
|
7 |
-
Stable tag: 5.0.
|
8 |
|
9 |
Track your WordPress site easily with the latest tracking codes and lots added data for search result pages and error pages.
|
10 |
|
@@ -49,6 +49,12 @@ This section describes how to install the plugin and get it working.
|
|
49 |
|
50 |
== Changelog ==
|
51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
= 5.0.4 =
|
53 |
Release Date: September 4th, 2014
|
54 |
|
4 |
Tags: analytics, google analytics, statistics, tracking, stats, google, yoast
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 4.0
|
7 |
+
Stable tag: 5.0.5
|
8 |
|
9 |
Track your WordPress site easily with the latest tracking codes and lots added data for search result pages and error pages.
|
10 |
|
49 |
|
50 |
== Changelog ==
|
51 |
|
52 |
+
= 5.0.5 =
|
53 |
+
Release Date: September 4th, 2014
|
54 |
+
|
55 |
+
* Bugfixes:
|
56 |
+
* Fixes error in link parsing that would cause all sorts of display errors.
|
57 |
+
|
58 |
= 5.0.4 =
|
59 |
Release Date: September 4th, 2014
|
60 |
|