Version Description
Download this release
Release Info
| Developer | dsmart |
| Plugin | |
| Version | 5.4-beta3 |
| Comparing to | |
| See all releases | |
Code changes from version 5.4-beta2 to 5.4-beta3
- class.json-api-endpoints.php +1 -1
- css/jetpack-rtl.css +0 -3
- css/jetpack.css +0 -3
- jetpack.php +2 -2
- modules/google-analytics/wp-google-analytics.php +168 -10
- readme.txt +2 -1
class.json-api-endpoints.php
CHANGED
|
@@ -1069,7 +1069,7 @@ abstract class WPCOM_JSON_API_Endpoint {
|
|
| 1069 |
$first_name = '';
|
| 1070 |
$last_name = '';
|
| 1071 |
$URL = $author->comment_author_url;
|
| 1072 |
-
$avatar_URL = $this->api->get_avatar_url( $
|
| 1073 |
$profile_URL = 'https://en.gravatar.com/' . md5( strtolower( trim( $email ) ) );
|
| 1074 |
$nice = '';
|
| 1075 |
$site_id = -1;
|
| 1069 |
$first_name = '';
|
| 1070 |
$last_name = '';
|
| 1071 |
$URL = $author->comment_author_url;
|
| 1072 |
+
$avatar_URL = $this->api->get_avatar_url( $author );
|
| 1073 |
$profile_URL = 'https://en.gravatar.com/' . md5( strtolower( trim( $email ) ) );
|
| 1074 |
$nice = '';
|
| 1075 |
$site_id = -1;
|
css/jetpack-rtl.css
CHANGED
|
@@ -22,9 +22,6 @@ div[class^=gr_custom_container]{border:1px solid gray;border-radius:10px;padding
|
|
| 22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
| 23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:100% 0;clear:none;float:right;margin:0 0 -3px -5px;padding:0 0 6px 8px;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:100% 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
| 24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-right:inherit;padding-right:0}.widget_authors ul li li{padding-right:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-left:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
| 25 |
-
/*!
|
| 26 |
-
* Do not modify this file directly. It is compiled SASS code.
|
| 27 |
-
*/#wp-admin-bar-jetpack-idc.hide{display:none}#wp-admin-bar-jetpack-idc .jp-idc-admin-bar{background:#fff;border-radius:2px;color:#23282d;padding:4px 8px;font-size:12px}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons{color:#23282d;font-family:dashicons}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons:before{font-size:16px}#wpadminbar #wp-admin-bar-jetpack-idc:hover .ab-item{background:inherit}#wpadminbar #wp-admin-bar-jetpack-idc:hover .jp-idc-admin-bar{background:#eee}
|
| 28 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;right:0;left:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:right!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
| 29 |
.widget_eu_cookie_law_widget.widget{border:none;bottom:1em;display:none;right:1em;margin:0;padding:0;position:fixed;left:1em;width:auto;z-index:50001}#eu-cookie-law{background-color:#fff;border:1px solid #dedede;color:#2e4467;font-size:12px;line-height:1.5;overflow:hidden;padding:6px 15px 6px 6px;position:relative}#eu-cookie-law a,#eu-cookie-law a:active,#eu-cookie-law a:visited{color:inherit;cursor:inherit;text-decoration:underline}#eu-cookie-law a:hover{cursor:pointer;text-decoration:none}#eu-cookie-law.negative{background-color:#000;border:none;color:#fff}#eu-cookie-law input,#eu-cookie-law input:focus,#eu-cookie-law input:hover{background:#f3f3f3;border:1px solid #dedede;border-radius:4px;-moz-border-radius:3px;-webkit-border-radius:3px;color:#2e4453;cursor:pointer;display:inline;float:left;font-family:inherit;font-size:14px;font-weight:inherit;line-height:inherit;margin:0 5% 0 0;padding:8px 12px;position:static;text-transform:none}#eu-cookie-law.negative input,#eu-cookie-law.negative input:focus,#eu-cookie-law.negative input:hover{background:#282828;border-color:#535353;color:#fff}@media (max-width:600px){#eu-cookie-law{padding-bottom:55px}#eu-cookie-law input.accept{bottom:8px;position:absolute;left:8px}}
|
| 30 |
.flickr-images{text-align:center}.flickr-size-thumbnail .flickr-images{-ms-flex-line-pack:justify;align-content:space-between;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:center;justify-content:center}.flickr-images img{max-width:100%;margin:5px}
|
| 22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
| 23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:100% 0;clear:none;float:right;margin:0 0 -3px -5px;padding:0 0 6px 8px;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:100% 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
| 24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-right:inherit;padding-right:0}.widget_authors ul li li{padding-right:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-left:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
|
|
|
|
|
|
|
|
|
| 25 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;right:0;left:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:right!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
| 26 |
.widget_eu_cookie_law_widget.widget{border:none;bottom:1em;display:none;right:1em;margin:0;padding:0;position:fixed;left:1em;width:auto;z-index:50001}#eu-cookie-law{background-color:#fff;border:1px solid #dedede;color:#2e4467;font-size:12px;line-height:1.5;overflow:hidden;padding:6px 15px 6px 6px;position:relative}#eu-cookie-law a,#eu-cookie-law a:active,#eu-cookie-law a:visited{color:inherit;cursor:inherit;text-decoration:underline}#eu-cookie-law a:hover{cursor:pointer;text-decoration:none}#eu-cookie-law.negative{background-color:#000;border:none;color:#fff}#eu-cookie-law input,#eu-cookie-law input:focus,#eu-cookie-law input:hover{background:#f3f3f3;border:1px solid #dedede;border-radius:4px;-moz-border-radius:3px;-webkit-border-radius:3px;color:#2e4453;cursor:pointer;display:inline;float:left;font-family:inherit;font-size:14px;font-weight:inherit;line-height:inherit;margin:0 5% 0 0;padding:8px 12px;position:static;text-transform:none}#eu-cookie-law.negative input,#eu-cookie-law.negative input:focus,#eu-cookie-law.negative input:hover{background:#282828;border-color:#535353;color:#fff}@media (max-width:600px){#eu-cookie-law{padding-bottom:55px}#eu-cookie-law input.accept{bottom:8px;position:absolute;left:8px}}
|
| 27 |
.flickr-images{text-align:center}.flickr-size-thumbnail .flickr-images{-ms-flex-line-pack:justify;align-content:space-between;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:center;justify-content:center}.flickr-images img{max-width:100%;margin:5px}
|
css/jetpack.css
CHANGED
|
@@ -22,9 +22,6 @@ div[class^=gr_custom_container]{border:1px solid gray;border-radius:10px;padding
|
|
| 22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
| 23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:0 0;clear:none;float:left;margin:0 -5px -3px 0;padding:0 8px 6px 0;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:0 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
| 24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-left:inherit;padding-left:0}.widget_authors ul li li{padding-left:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-right:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
| 25 |
-
/*!
|
| 26 |
-
* Do not modify this file directly. It is compiled SASS code.
|
| 27 |
-
*/#wp-admin-bar-jetpack-idc.hide{display:none}#wp-admin-bar-jetpack-idc .jp-idc-admin-bar{background:#fff;border-radius:2px;color:#23282d;padding:4px 8px;font-size:12px}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons{color:#23282d;font-family:dashicons}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons:before{font-size:16px}#wpadminbar #wp-admin-bar-jetpack-idc:hover .ab-item{background:inherit}#wpadminbar #wp-admin-bar-jetpack-idc:hover .jp-idc-admin-bar{background:#eee}
|
| 28 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;left:0;right:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:left!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
| 29 |
.widget_eu_cookie_law_widget.widget{border:none;bottom:1em;display:none;left:1em;margin:0;padding:0;position:fixed;right:1em;width:auto;z-index:50001}#eu-cookie-law{background-color:#fff;border:1px solid #dedede;color:#2e4467;font-size:12px;line-height:1.5;overflow:hidden;padding:6px 6px 6px 15px;position:relative}#eu-cookie-law a,#eu-cookie-law a:active,#eu-cookie-law a:visited{color:inherit;cursor:inherit;text-decoration:underline}#eu-cookie-law a:hover{cursor:pointer;text-decoration:none}#eu-cookie-law.negative{background-color:#000;border:none;color:#fff}#eu-cookie-law input,#eu-cookie-law input:focus,#eu-cookie-law input:hover{background:#f3f3f3;border:1px solid #dedede;border-radius:4px;-moz-border-radius:3px;-webkit-border-radius:3px;color:#2e4453;cursor:pointer;display:inline;float:right;font-family:inherit;font-size:14px;font-weight:inherit;line-height:inherit;margin:0 0 0 5%;padding:8px 12px;position:static;text-transform:none}#eu-cookie-law.negative input,#eu-cookie-law.negative input:focus,#eu-cookie-law.negative input:hover{background:#282828;border-color:#535353;color:#fff}@media (max-width:600px){#eu-cookie-law{padding-bottom:55px}#eu-cookie-law input.accept{bottom:8px;position:absolute;right:8px}}
|
| 30 |
.flickr-images{text-align:center}.flickr-size-thumbnail .flickr-images{-ms-flex-line-pack:justify;align-content:space-between;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:center;justify-content:center}.flickr-images img{max-width:100%;margin:5px}
|
| 22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
| 23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:0 0;clear:none;float:left;margin:0 -5px -3px 0;padding:0 8px 6px 0;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:0 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
| 24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-left:inherit;padding-left:0}.widget_authors ul li li{padding-left:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-right:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
|
|
|
|
|
|
|
|
|
| 25 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;left:0;right:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:left!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
| 26 |
.widget_eu_cookie_law_widget.widget{border:none;bottom:1em;display:none;left:1em;margin:0;padding:0;position:fixed;right:1em;width:auto;z-index:50001}#eu-cookie-law{background-color:#fff;border:1px solid #dedede;color:#2e4467;font-size:12px;line-height:1.5;overflow:hidden;padding:6px 6px 6px 15px;position:relative}#eu-cookie-law a,#eu-cookie-law a:active,#eu-cookie-law a:visited{color:inherit;cursor:inherit;text-decoration:underline}#eu-cookie-law a:hover{cursor:pointer;text-decoration:none}#eu-cookie-law.negative{background-color:#000;border:none;color:#fff}#eu-cookie-law input,#eu-cookie-law input:focus,#eu-cookie-law input:hover{background:#f3f3f3;border:1px solid #dedede;border-radius:4px;-moz-border-radius:3px;-webkit-border-radius:3px;color:#2e4453;cursor:pointer;display:inline;float:right;font-family:inherit;font-size:14px;font-weight:inherit;line-height:inherit;margin:0 0 0 5%;padding:8px 12px;position:static;text-transform:none}#eu-cookie-law.negative input,#eu-cookie-law.negative input:focus,#eu-cookie-law.negative input:hover{background:#282828;border-color:#535353;color:#fff}@media (max-width:600px){#eu-cookie-law{padding-bottom:55px}#eu-cookie-law input.accept{bottom:8px;position:absolute;right:8px}}
|
| 27 |
.flickr-images{text-align:center}.flickr-size-thumbnail .flickr-images{-ms-flex-line-pack:justify;align-content:space-between;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:center;justify-content:center}.flickr-images img{max-width:100%;margin:5px}
|
jetpack.php
CHANGED
|
@@ -5,7 +5,7 @@
|
|
| 5 |
* Plugin URI: https://jetpack.com
|
| 6 |
* Description: Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.
|
| 7 |
* Author: Automattic
|
| 8 |
-
* Version: 5.4-
|
| 9 |
* Author URI: https://jetpack.com
|
| 10 |
* License: GPL2+
|
| 11 |
* Text Domain: jetpack
|
|
@@ -14,7 +14,7 @@
|
|
| 14 |
|
| 15 |
define( 'JETPACK__MINIMUM_WP_VERSION', '4.7' );
|
| 16 |
|
| 17 |
-
define( 'JETPACK__VERSION', '5.4-
|
| 18 |
define( 'JETPACK_MASTER_USER', true );
|
| 19 |
define( 'JETPACK__API_VERSION', 1 );
|
| 20 |
define( 'JETPACK__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
| 5 |
* Plugin URI: https://jetpack.com
|
| 6 |
* Description: Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.
|
| 7 |
* Author: Automattic
|
| 8 |
+
* Version: 5.4-beta3
|
| 9 |
* Author URI: https://jetpack.com
|
| 10 |
* License: GPL2+
|
| 11 |
* Text Domain: jetpack
|
| 14 |
|
| 15 |
define( 'JETPACK__MINIMUM_WP_VERSION', '4.7' );
|
| 16 |
|
| 17 |
+
define( 'JETPACK__VERSION', '5.4-beta3' );
|
| 18 |
define( 'JETPACK_MASTER_USER', true );
|
| 19 |
define( 'JETPACK__API_VERSION', 1 );
|
| 20 |
define( 'JETPACK__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
modules/google-analytics/wp-google-analytics.php
CHANGED
|
@@ -35,7 +35,10 @@ class Jetpack_Google_Analytics {
|
|
| 35 |
* @return void
|
| 36 |
*/
|
| 37 |
private function __construct() {
|
|
|
|
|
|
|
| 38 |
add_action( 'wp_footer', array( $this, 'insert_code' ) );
|
|
|
|
| 39 |
}
|
| 40 |
|
| 41 |
/**
|
|
@@ -115,7 +118,7 @@ class Jetpack_Google_Analytics {
|
|
| 115 |
$track = array();
|
| 116 |
if ( is_404() ) {
|
| 117 |
// This is a 404 and we are supposed to track them.
|
| 118 |
-
$custom_vars[] = "_gaq.push(
|
| 119 |
} elseif ( is_search() ) {
|
| 120 |
// Set track for searches, if it's a search, and we are supposed to.
|
| 121 |
$track['data'] = sanitize_text_field( wp_unslash( $_REQUEST['s'] ) ); // Input var okay.
|
|
@@ -131,17 +134,27 @@ class Jetpack_Google_Analytics {
|
|
| 131 |
$custom_vars[] = "_gaq.push(['_trackPageview']);";
|
| 132 |
}
|
| 133 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 134 |
$async_code = "<!-- Jetpack Google Analytics -->
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
|
| 146 |
$custom_vars_string = implode( "\r\n", $custom_vars );
|
| 147 |
$async_code = str_replace( '%custom_vars%', $custom_vars_string, $async_code );
|
|
@@ -163,6 +176,151 @@ class Jetpack_Google_Analytics {
|
|
| 163 |
|
| 164 |
return '';
|
| 165 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 166 |
}
|
| 167 |
|
| 168 |
global $jetpack_google_analytics;
|
| 35 |
* @return void
|
| 36 |
*/
|
| 37 |
private function __construct() {
|
| 38 |
+
add_filter( 'jetpack_wga_classic_custom_vars', array( $this, 'jetpack_wga_classic_anonymize_ip' ) );
|
| 39 |
+
add_filter( 'jetpack_wga_classic_custom_vars', array( $this, 'jetpack_wga_classic_track_purchases' ) );
|
| 40 |
add_action( 'wp_footer', array( $this, 'insert_code' ) );
|
| 41 |
+
add_action( 'wp_footer', array( $this, 'jetpack_wga_classic_track_add_to_cart' ) );
|
| 42 |
}
|
| 43 |
|
| 44 |
/**
|
| 118 |
$track = array();
|
| 119 |
if ( is_404() ) {
|
| 120 |
// This is a 404 and we are supposed to track them.
|
| 121 |
+
$custom_vars[] = "_gaq.push(['_trackEvent', '404', document.location.href, document.referrer]);";
|
| 122 |
} elseif ( is_search() ) {
|
| 123 |
// Set track for searches, if it's a search, and we are supposed to.
|
| 124 |
$track['data'] = sanitize_text_field( wp_unslash( $_REQUEST['s'] ) ); // Input var okay.
|
| 134 |
$custom_vars[] = "_gaq.push(['_trackPageview']);";
|
| 135 |
}
|
| 136 |
|
| 137 |
+
/**
|
| 138 |
+
* Allow for additional elements to be added to the classic Google Analytics queue (_gaq) array
|
| 139 |
+
*
|
| 140 |
+
* @since 5.4.0
|
| 141 |
+
*
|
| 142 |
+
* @param array $custom_vars Array of classic Google Analytics queue elements
|
| 143 |
+
*/
|
| 144 |
+
$custom_vars = apply_filters( 'jetpack_wga_classic_custom_vars', $custom_vars );
|
| 145 |
+
|
| 146 |
+
// Ref: https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingEcommerce#Example
|
| 147 |
$async_code = "<!-- Jetpack Google Analytics -->
|
| 148 |
+
<script type='text/javascript'>
|
| 149 |
+
var _gaq = _gaq || [];
|
| 150 |
+
%custom_vars%
|
| 151 |
|
| 152 |
+
(function() {
|
| 153 |
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
| 154 |
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
| 155 |
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
| 156 |
+
})();
|
| 157 |
+
</script>";
|
| 158 |
|
| 159 |
$custom_vars_string = implode( "\r\n", $custom_vars );
|
| 160 |
$async_code = str_replace( '%custom_vars%', $custom_vars_string, $async_code );
|
| 176 |
|
| 177 |
return '';
|
| 178 |
}
|
| 179 |
+
|
| 180 |
+
/**
|
| 181 |
+
* Used to filter in the anonymize IP snippet to the custom vars array for classic analytics
|
| 182 |
+
* Ref https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApi_gat#_gat._anonymizelp
|
| 183 |
+
* @param array custom vars to be filtered
|
| 184 |
+
* @return array possibly updated custom vars
|
| 185 |
+
*/
|
| 186 |
+
public function jetpack_wga_classic_anonymize_ip( $custom_vars ) {
|
| 187 |
+
$o = get_option( 'jetpack_wga' );
|
| 188 |
+
$anonymize_ip = isset( $o[ 'anonymize_ip' ] ) ? $o[ 'anonymize_ip' ] : false;
|
| 189 |
+
if ( $anonymize_ip ) {
|
| 190 |
+
array_push( $custom_vars, "_gaq.push(['_gat._anonymizeIp']);" );
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
return $custom_vars;
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
/**
|
| 197 |
+
* Used to filter in the order details to the custom vars array for classic analytics
|
| 198 |
+
* @param array custom vars to be filtered
|
| 199 |
+
* @return array possibly updated custom vars
|
| 200 |
+
*/
|
| 201 |
+
public function jetpack_wga_classic_track_purchases( $custom_vars ) {
|
| 202 |
+
global $wp;
|
| 203 |
+
|
| 204 |
+
// Ref: https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingEcommerce#Example
|
| 205 |
+
$o = get_option( 'jetpack_wga' );
|
| 206 |
+
$ec_track_purchases = isset( $o[ 'ec_track_purchases' ] ) ? $o[ 'ec_track_purchases' ] : false;
|
| 207 |
+
$minimum_woocommerce_active = class_exists( 'WooCommerce' ) && version_compare( WC_VERSION, '3.0', '>=' );
|
| 208 |
+
if ( $ec_track_purchases && $minimum_woocommerce_active && is_order_received_page() ) {
|
| 209 |
+
$order_id = isset( $wp->query_vars['order-received'] ) ? $wp->query_vars['order-received'] : 0;
|
| 210 |
+
if ( 0 < $order_id && 1 != get_post_meta( $order_id, '_ga_tracked', true ) ) {
|
| 211 |
+
$order = new WC_Order( $order_id );
|
| 212 |
+
|
| 213 |
+
// [ '_add_Trans', '123', 'Site Title', '21.00', '1.00', '5.00', 'Snohomish', 'WA', 'USA' ]
|
| 214 |
+
array_push(
|
| 215 |
+
$custom_vars,
|
| 216 |
+
sprintf(
|
| 217 |
+
'_gaq.push( %s );', json_encode(
|
| 218 |
+
array(
|
| 219 |
+
'_addTrans',
|
| 220 |
+
(string) $order->get_order_number(),
|
| 221 |
+
get_bloginfo( 'name' ),
|
| 222 |
+
(string) $order->get_total(),
|
| 223 |
+
(string) $order->get_total_tax(),
|
| 224 |
+
(string) $order->get_total_shipping(),
|
| 225 |
+
(string) $order->get_billing_city(),
|
| 226 |
+
(string) $order->get_billing_state(),
|
| 227 |
+
(string) $order->get_billing_country()
|
| 228 |
+
)
|
| 229 |
+
)
|
| 230 |
+
)
|
| 231 |
+
);
|
| 232 |
+
|
| 233 |
+
// Order items
|
| 234 |
+
if ( $order->get_items() ) {
|
| 235 |
+
foreach ( $order->get_items() as $item ) {
|
| 236 |
+
$product = $order->get_product_from_item( $item );
|
| 237 |
+
$product_sku_or_id = $product->get_sku() ? $product->get_sku() : $product->get_id();
|
| 238 |
+
|
| 239 |
+
array_push(
|
| 240 |
+
$custom_vars,
|
| 241 |
+
sprintf(
|
| 242 |
+
'_gaq.push( %s );', json_encode(
|
| 243 |
+
array(
|
| 244 |
+
'_addItem',
|
| 245 |
+
(string) $order->get_order_number(),
|
| 246 |
+
(string) $product_sku_or_id,
|
| 247 |
+
$item['name'],
|
| 248 |
+
self::get_product_categories_concatenated( $product ),
|
| 249 |
+
(string) $order->get_item_total( $item ),
|
| 250 |
+
(string) $item['qty']
|
| 251 |
+
)
|
| 252 |
+
)
|
| 253 |
+
)
|
| 254 |
+
);
|
| 255 |
+
}
|
| 256 |
+
} // get_items
|
| 257 |
+
|
| 258 |
+
// Mark the order as tracked
|
| 259 |
+
update_post_meta( $order_id, '_ga_tracked', 1 );
|
| 260 |
+
array_push( $custom_vars, "_gaq.push(['_trackTrans']);" );
|
| 261 |
+
} // order not yet tracked
|
| 262 |
+
} // is order received page
|
| 263 |
+
|
| 264 |
+
return $custom_vars;
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
/**
|
| 268 |
+
* Gets product categories or varation attributes as a formatted concatenated string
|
| 269 |
+
* @param WC_Product
|
| 270 |
+
* @return string
|
| 271 |
+
*/
|
| 272 |
+
public function get_product_categories_concatenated( $product ) {
|
| 273 |
+
$variation_data = $product->is_type( 'variation' ) ? wc_get_product_variation_attributes( $product->get_id() ) : '';
|
| 274 |
+
if ( is_array( $variation_data ) && ! empty( $variation_data ) ) {
|
| 275 |
+
$line = wc_get_formatted_variation( $variation_data, true );
|
| 276 |
+
} else {
|
| 277 |
+
$out = array();
|
| 278 |
+
$categories = get_the_terms( $product->get_id(), 'product_cat' );
|
| 279 |
+
if ( $categories ) {
|
| 280 |
+
foreach ( $categories as $category ) {
|
| 281 |
+
$out[] = $category->name;
|
| 282 |
+
}
|
| 283 |
+
}
|
| 284 |
+
$line = join( "/", $out );
|
| 285 |
+
}
|
| 286 |
+
return $line;
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
/**
|
| 290 |
+
* Used to add footer javascript to track user clicking on add-to-cart buttons
|
| 291 |
+
* on single views (.single_add_to_cart_button) and list views (.add_to_cart_button)
|
| 292 |
+
*/
|
| 293 |
+
public function jetpack_wga_classic_track_add_to_cart() {
|
| 294 |
+
$tracking_id = $this->_get_tracking_code();
|
| 295 |
+
if ( empty( $tracking_id ) ) {
|
| 296 |
+
return;
|
| 297 |
+
}
|
| 298 |
+
|
| 299 |
+
$o = get_option( 'jetpack_wga' );
|
| 300 |
+
$ec_track_add_to_cart = isset( $o[ 'ec_track_add_to_cart' ] ) ? $o[ 'ec_track_add_to_cart' ] : false;
|
| 301 |
+
if ( $ec_track_add_to_cart ) {
|
| 302 |
+
if ( is_product() ) { // product page
|
| 303 |
+
global $product;
|
| 304 |
+
$product_sku_or_id = $product->get_sku() ? $product->get_sku() : "#" + $product->get_id();
|
| 305 |
+
wc_enqueue_js(
|
| 306 |
+
"jQuery( function( $ ) {
|
| 307 |
+
$( '.single_add_to_cart_button' ).click( function() {
|
| 308 |
+
_gaq.push(['_trackEvent', 'Products', 'Add to Cart', '#" . esc_js( $product_sku_or_id ) . "']);
|
| 309 |
+
} );
|
| 310 |
+
} );"
|
| 311 |
+
);
|
| 312 |
+
} else if ( is_woocommerce() ) { // any other page that uses templates (like product lists, archives, etc)
|
| 313 |
+
wc_enqueue_js(
|
| 314 |
+
"jQuery( function( $ ) {
|
| 315 |
+
$( '.add_to_cart_button:not(.product_type_variable, .product_type_grouped)' ).click( function() {
|
| 316 |
+
var label = $( this ).data( 'product_sku' ) ? $( this ).data( 'product_sku' ) : '#' + $( this ).data( 'product_id' );
|
| 317 |
+
_gaq.push(['_trackEvent', 'Products', 'Add to Cart', label]);
|
| 318 |
+
} );
|
| 319 |
+
} );"
|
| 320 |
+
);
|
| 321 |
+
}
|
| 322 |
+
}
|
| 323 |
+
}
|
| 324 |
}
|
| 325 |
|
| 326 |
global $jetpack_google_analytics;
|
readme.txt
CHANGED
|
@@ -114,7 +114,8 @@ There are opportunities for developers at all levels to contribute. [Learn more
|
|
| 114 |
|
| 115 |
**Enhancements**
|
| 116 |
* Add Schema.org markup to the Contact Info Widget.
|
| 117 |
-
* Add a new "Date" field to the Contact Form.
|
|
|
|
| 118 |
* Do not show any update notices when in [development mode](http://jetpack.com/support/development-mode).
|
| 119 |
* Improve our documentation to help contributors set up a unit testing environment.
|
| 120 |
* Avoid conflicts between Jetpack's Infinite Scroll and other Infinite Scroll plugins.
|
| 114 |
|
| 115 |
**Enhancements**
|
| 116 |
* Add Schema.org markup to the Contact Info Widget.
|
| 117 |
+
* Add a new "Date" field to the Contact Form.
|
| 118 |
+
* Added support in the Google Analytics feature for IP anonymization and basic WooCommerce tracking.
|
| 119 |
* Do not show any update notices when in [development mode](http://jetpack.com/support/development-mode).
|
| 120 |
* Improve our documentation to help contributors set up a unit testing environment.
|
| 121 |
* Avoid conflicts between Jetpack's Infinite Scroll and other Infinite Scroll plugins.
|
