Post Status Excerpt (No. 9) — Recommended Reading for WordPress Professionals and How We Update • Post Status[] – 1; } /* Disable tracking if the opt-out cookie exists. */ if ( __gtagTrackerIsOptedOut() ) { window[disableStr] = true; } /* Opt-out function */ function __gtagTrackerOptout() { document.cookie = disableStr + ‘=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/’; window[disableStr] = true; } if ( ‘undefined’ === typeof gaOptout ) { function gaOptout() { __gtagTrackerOptout(); } } window.dataLayer = window.dataLayer || []; if ( mi_track_user ) { function __gtagTracker() {dataLayer.push( arguments );} __gtagTracker( ‘js’, new Date() ); __gtagTracker( ‘set’, { ‘developer_id.dZGIzZG’ : true, ‘dimension1’ : ‘post’,’dimension2′ : ‘false’,’dimension3′ : ‘David Bisset’,’dimension4′ : ‘2021-05-06T16:49:25-05:00′,’dimension5’ : ‘ok’, }); __gtagTracker( ‘config’, ‘UA-37840849-1’, { forceSSL:true, } ); window.gtag = __gtagTracker; ( function () { /* https://developers.google.com/analytics/devguides/collection/analyticsjs/ */ /* ga and __gaTracker compatibility shim. */ var noopfn = function () { return null; }; var newtracker = function () { return new Tracker(); }; var Tracker = function () { return null; }; var p = Tracker.prototype; p.get = noopfn; p.set = noopfn; p.send = function (){ var args = Array.prototype.slice.call(arguments); args.unshift( ‘send’ ); __gaTracker.apply(null, args); }; var __gaTracker = function () { var len = arguments.length; if ( len === 0 ) { return; } var f = arguments[len – 1]; if ( typeof f !== ‘object’ || f === null || typeof f.hitCallback !== ‘function’ ) { if ( ‘send’ === arguments[0] ) { var hitConverted, hitObject = false, action; if ( ‘event’ === arguments[1] ) { if ( ‘undefined’ !== typeof arguments[3] ) { hitObject = { ‘eventAction’: arguments[3], ‘eventCategory’: arguments[2], ‘eventLabel’: arguments[4], ‘value’: arguments[5] ? arguments[5] : 1, } } } if ( typeof arguments[2] === ‘object’ ) { hitObject = arguments[2]; } if ( typeof arguments[5] === ‘object’ ) { Object.assign( hitObject, arguments[5] ); } if ( ‘undefined’ !== typeof ( arguments[1].hitType ) ) { hitObject = arguments[1]; } if ( hitObject ) { action = ‘timing’ === arguments[1].hitType ? ‘timing_complete’ : hitObject.eventAction; hitConverted = mapArgs( hitObject ); __gtagTracker( ‘event’, action, hitConverted ); } } return; } function mapArgs( args ) { var gaKey, hit = {}; var gaMap = { ‘eventCategory’: ‘event_category’, ‘eventAction’: ‘event_action’, ‘eventLabel’: ‘event_label’, ‘eventValue’: ‘event_value’, ‘nonInteraction’: ‘non_interaction’, ‘timingCategory’: ‘event_category’, ‘timingVar’: ‘name’, ‘timingValue’: ‘value’, ‘timingLabel’: ‘event_label’, }; for ( gaKey in gaMap ) { if ( ‘undefined’ !== typeof args[gaKey] ) { hit[gaMap[gaKey]] = args[gaKey]; } } return hit; } try { f.hitCallback(); } catch ( ex ) { } }; __gaTracker.create = newtracker; __gaTracker.getByName = newtracker; __gaTracker.getAll = function () { return []; }; __gaTracker.remove = noopfn; __gaTracker.loaded = true; window[‘__gaTracker’] = __gaTracker; } )(); } else { console.log( “” ); ( function () { function __gtagTracker() { return null; } window[‘__gtagTracker’] = __gtagTracker; window[‘gtag’] = __gtagTracker; } )(); } ]]> -1; } function monsterinsights_forms_record_conversion( event ) { var monsterinsights_form_conversion_id = event.target.id; var monsterinsights_form_action = event.target.getAttribute(“miforms-action”); if ( monsterinsights_form_conversion_id && ! monsterinsights_form_action ) { document.getElementById(monsterinsights_form_conversion_id).setAttribute(“miforms-action”, “submitted”); __gtagTracker(‘event’, ‘conversion’, { event_category: ‘form’, event_label: monsterinsights_form_conversion_id, value: 1, }); } } /* Attach the events to all clicks in the document after page and GA has loaded */ function monsterinsights_forms_load() { if ( typeof(__gaTracker) !== ‘undefined’ && __gaTracker && __gaTracker.hasOwnProperty( “loaded” ) && __gaTracker.loaded == true ) { var __gaFormsTrackerWindow = window; if ( __gaFormsTrackerWindow.addEventListener ) { __gaFormsTrackerWindow.addEventListener( “load”, monsterinsights_forms_record_impression, false ); } else { if ( __gaFormsTrackerWindow.attachEvent ) { __gaFormsTrackerWindow.attachEvent(“onload”, monsterinsights_forms_record_impression ); } } } else if ( typeof(__gtagTracker) !== ‘undefined’ && __gtagTracker ) { var __gtagFormsTrackerWindow = window; if ( __gtagFormsTrackerWindow.addEventListener ) { __gtagFormsTrackerWindow.addEventListener( “load”, monsterinsights_forms_record_impression, false ); } else { if ( __gtagFormsTrackerWindow.attachEvent ) { __gtagFormsTrackerWindow.attachEvent(“onload”, monsterinsights_forms_record_impression ); } } } else { setTimeout(monsterinsights_forms_load, 200); } } /* Custom Ninja Forms impression tracking */ if (window.jQuery) { jQuery(document).on( ‘nfFormReady’, function( e, layoutView ) { var label = layoutView.el; label = label.substring(1, label.length); label = label.split(‘-‘).slice(0,3).join(‘-‘); __gtagTracker(‘event’, ‘impression’, { event_category: ‘form’, event_label: label, value: 1, non_interaction: true }); }); } /* Custom Bloom Form tracker */ function monsterinsights_add_bloom_forms_ids() { var bloom_forms = document.querySelectorAll( ‘.et_bloom_form_content form’ ); if ( bloom_forms.length > 0 ) { for ( var i = 0; i < bloom_forms.length; i++ ) { if ( '' === bloom_forms[i].id ) { var form_parent_root = monsterinsights_find_parent_with_class( bloom_forms[i], 'et_bloom_optin' ); if ( form_parent_root ) { var classes = form_parent_root.className.split( ' ' ); for ( var j = 0; j = 0 ) { return element.parentNode; } else { return monsterinsights_find_parent_with_class( element.parentNode, className ); } } return false; } monsterinsights_forms_load(); ]]>

Cory and David discuss three books WordPress professionals should read as well as the way they make updates to WordPress.

Cory recommends some books for working professionals in the WordPress space.

In this episode of Post Status Excerpt, Cory Miller recommends three books with great value to the WordPress community and people who make their living as professionals in it. From the business value of community itself to marketing fundamentals and how to avoid being a perfectionist, Cory explains why he thinks these books stand out. Cory also tells us how he reads “like a vampire.” ?‍️ (No he does not sleep in a coffin.)

Also covered in this episode: David talks about a recent post on the Make WordPress site by Francesca Marano, “Updates on updating the updaters.” David asks Cory how he handles WordPress core and plugin updates. Cory’s answer may (or may not) surprise you! (Learning how to be an “Imperfectionist” might be useful when it comes to WordPress updates.)

Every week Post Status Excerpt will brief you on important WordPress news — in about 15 minutes or less! Learn what’s new in WordPress in a flash.

Browse our archives, and don’t forget to subscribe via iTunes, YouTube, Stitcher, Simplecast, or RSS.

Mentioned in the show:

Spin up your own extremely fast WordPress server in minutes with SpinupWP. Use any cloud hosting provider you want, and manage your servers remotely with a simple but powerful control panel. Get the security and performance of managed hosting without losing the independence of hosting your projects and your clients yourself.

Related Club Members

corymiller_mugshot_casual-100x100 Post Status Excerpt (No. 9) — Recommended Reading for WordPress Professionals and How We Update • Post Status design tips

Cory Miller

david-bisset-335x335 Post Status Excerpt (No. 9) — Recommended Reading for WordPress Professionals and How We Update • Post Status design tips

David Bisset

envelope Post Status Excerpt (No. 9) — Recommended Reading for WordPress Professionals and How We Update • Post Status design tips Grab the Newsletter

= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find(‘#gform_wrapper_3’);var is_confirmation = jQuery(this).contents().find(‘#gform_confirmation_wrapper_3’).length > 0;var is_redirect = contents.indexOf(‘gformRedirect(){‘) >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery(‘html’).css(‘margin-top’), 10) + parseInt(jQuery(‘body’).css(‘margin-top’), 10) + 100;if(is_form){jQuery(‘#gform_wrapper_3’).html(form_content.html());if(form_content.hasClass(‘gform_validation_error’)){jQuery(‘#gform_wrapper_3’).addClass(‘gform_validation_error’);} else {jQuery(‘#gform_wrapper_3’).removeClass(‘gform_validation_error’);}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery(‘#gform_wrapper_3’).offset().top – mt); }, 50 );if(window[‘gformInitDatepicker’]) {gformInitDatepicker();}if(window[‘gformInitPriceFields’]) {gformInitPriceFields();}var current_page = jQuery(‘#gform_source_page_number_3’).val();gformInitSpinner( 3, ‘https://cdn.poststatus.com/wp-content/plugins/gravityforms/images/spinner.gif’ );jQuery(document).trigger(‘gform_page_loaded’, [3, current_page]);window[‘gf_submitting_3’] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find(‘.GF_AJAX_POSTBACK’).html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery(‘#gform_wrapper_3’).replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery(‘#gf_3’).offset().top – mt);jQuery(document).trigger(‘gform_confirmation_loaded’, [3]);window[‘gf_submitting_3’] = false;}, 50);}else{jQuery(‘#gform_3’).append(contents);if(window[‘gformRedirect’]) {gformRedirect();}}jQuery(document).trigger(‘gform_post_render’, [3, current_page]);} );} );]]>

star Post Status Excerpt (No. 9) — Recommended Reading for WordPress Professionals and How We Update • Post Status design tips Featured WordPress Job Openings

{“cart_token”:””,”hash”:””,”cart_data”:””}

3) { var type = ‘event’; var eventName = ‘timing_complete’; fieldsArray = { event_category : ‘Scroll Depth’, name : action, event_label : label, value : timing, non_interaction: 1 }; MonsterInsightsObject.sendEvent( type, eventName, fieldsArray ); } } function calculateMarks(docHeight) { return { ‘25%’ : parseInt(docHeight * 0.25, 10), ‘50%’ : parseInt(docHeight * 0.50, 10), ‘75%’ : parseInt(docHeight * 0.75, 10), /* Cushion to trigger 100% event in iOS */ ‘100%’: docHeight – 5 }; } function checkMarks(marks, scrollDistance, timing) { /* Check each active mark */ $.each(marks, function(key, val) { if ( $.inArray(key, cache) === -1 && scrollDistance >= val ) { sendEvent(‘Percentage’, key, scrollDistance, timing); cache.push(key); } }); } function rounded(scrollDistance) { /* Returns String */ return (Math.floor(scrollDistance/250) * 250).toString(); } function init() { bindScrollDepth(); } /* * Public Methods */ /* Reset Scroll Depth with the originally initialized options */ $.scrollDepth.reset = function() { cache = []; lastPixelDepth = 0; $window.off(‘scroll.scrollDepth’); bindScrollDepth(); }; /* Add DOM elements to be tracked */ $.scrollDepth.addElements = function(elems) { if (typeof elems == “undefined” || !$.isArray(elems)) { return; } $.merge(options.elements, elems); /* If scroll event has been unbound from window, rebind */ if (!scrollEventBound) { bindScrollDepth(); } }; /* Remove DOM elements currently tracked */ $.scrollDepth.removeElements = function(elems) { if (typeof elems == “undefined” || !$.isArray(elems)) { return; } $.each(elems, function(index, elem) { var inElementsArray = $.inArray(elem, options.elements); var inCacheArray = $.inArray(elem, cache); if (inElementsArray != -1) { options.elements.splice(inElementsArray, 1); } if (inCacheArray != -1) { cache.splice(inCacheArray, 1); } }); }; /* * Throttle function borrowed from: * Underscore.js 1.5.2 * http://underscorejs.org * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors * Underscore may be freely distributed under the MIT license. */ function throttle(func, wait) { var context, args, result; var timeout = null; var previous = 0; var later = function() { previous = new Date; timeout = null; result = func.apply(context, args); }; return function() { var now = new Date; if (!previous) previous = now; var remaining = wait – (now – previous); context = this; args = arguments; if (remaining

Source