The current logic for condtionally including the GA snippet is confusing and bit inconsistent. In development you would see logging when the snippet wasn't included but this wouldn't happen if you were a logged in admin. Now there's only two cases: 1. Production non admin user: GA snippet is loaded. 2. Anything else (development or admin user): log output
109 lines
3.5 KiB
PHP
109 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace Roots\Sage\Assets;
|
|
|
|
/**
|
|
* Scripts and stylesheets
|
|
*
|
|
* Enqueue stylesheets in the following order:
|
|
* 1. /theme/dist/styles/main.css
|
|
*
|
|
* Enqueue scripts in the following order:
|
|
* 1. Latest jQuery via Google CDN (if enabled in config.php)
|
|
* 2. /theme/dist/scripts/modernizr.js
|
|
* 3. /theme/dist/scripts/main.js
|
|
*
|
|
* Google Analytics is loaded after enqueued scripts if:
|
|
* - An ID has been defined in config.php
|
|
* - You're not logged in as an administrator
|
|
*/
|
|
function asset_path($filename) {
|
|
if (WP_ENV === 'development') {
|
|
return get_template_directory_uri() . '/dist/' . $filename;
|
|
}
|
|
|
|
$manifest_path = get_template_directory() . '/dist/rev-manifest.json';
|
|
|
|
if (file_exists($manifest_path)) {
|
|
$manifest = json_decode(file_get_contents($manifest_path), true);
|
|
} else {
|
|
$manifest = [];
|
|
}
|
|
|
|
if (array_key_exists($filename, $manifest)) {
|
|
return get_template_directory_uri() . '/dist/' . $manifest[$filename];
|
|
}
|
|
}
|
|
|
|
function assets() {
|
|
wp_enqueue_style('sage_css', asset_path('styles/main.css'), false, null);
|
|
|
|
/**
|
|
* Grab Google CDN's latest jQuery with a protocol relative URL; fallback to local if offline
|
|
* jQuery & Modernizr load in the footer per HTML5 Boilerplate's recommendation: http://goo.gl/nMGR7P
|
|
* If a plugin enqueues jQuery-dependent scripts in the head, jQuery will load in the head to meet the plugin's dependencies
|
|
* To explicitly load jQuery in the head, change the last wp_enqueue_script parameter to false
|
|
*/
|
|
if (!is_admin() && current_theme_supports('jquery-cdn')) {
|
|
wp_deregister_script('jquery');
|
|
|
|
wp_register_script('jquery', '//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', [], null, true);
|
|
|
|
add_filter('script_loader_src', __NAMESPACE__ . '\\jquery_local_fallback', 10, 2);
|
|
}
|
|
|
|
if (is_single() && comments_open() && get_option('thread_comments')) {
|
|
wp_enqueue_script('comment-reply');
|
|
}
|
|
|
|
wp_enqueue_script('modernizr', asset_path('scripts/modernizr.js'), [], null, true);
|
|
wp_enqueue_script('jquery');
|
|
wp_enqueue_script('sage_js', asset_path('scripts/main.js'), [], null, true);
|
|
}
|
|
add_action('wp_enqueue_scripts', __NAMESPACE__ . '\\assets', 100);
|
|
|
|
// http://wordpress.stackexchange.com/a/12450
|
|
function jquery_local_fallback($src, $handle = null) {
|
|
static $add_jquery_fallback = false;
|
|
|
|
if ($add_jquery_fallback) {
|
|
echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/dist/scripts/jquery.js"><\/script>\')</script>' . "\n";
|
|
$add_jquery_fallback = false;
|
|
}
|
|
|
|
if ($handle === 'jquery') {
|
|
$add_jquery_fallback = true;
|
|
}
|
|
|
|
return $src;
|
|
}
|
|
add_action('wp_head', __NAMESPACE__ . '\\jquery_local_fallback');
|
|
|
|
/**
|
|
* Google Analytics snippet from HTML5 Boilerplate
|
|
*
|
|
* Cookie domain is 'auto' configured. See: http://goo.gl/VUCHKM
|
|
*/
|
|
function google_analytics() {
|
|
?>
|
|
<script>
|
|
<?php if (WP_ENV === 'production' && !current_user_can('manage_options')) : ?>
|
|
(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
|
|
function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
|
|
e=o.createElement(i);r=o.getElementsByTagName(i)[0];
|
|
e.src='//www.google-analytics.com/analytics.js';
|
|
r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
|
|
<?php else: ?>
|
|
function ga() {
|
|
console.log('Google Analytics: ' + [].slice.call(arguments));
|
|
}
|
|
<?php endif; ?>
|
|
ga('create','<?= GOOGLE_ANALYTICS_ID; ?>','auto');ga('send','pageview');
|
|
</script>
|
|
<?php
|
|
}
|
|
|
|
if (GOOGLE_ANALYTICS_ID) {
|
|
add_action('wp_footer', __NAMESPACE__ . '\\google_analytics', 20);
|
|
}
|