Blog, CMS, Web, Wordpress

Enterprise Website Consolidation: What I Did, and Why You Should

When you are a responsible party concerning your companies’ websites, many challenges come up along the way. And one of the toughest challenges I have faced in my career supporting enterprise architecture was working with business partners to make an enterprise decision over an easy one.

The Problem: Over the course of weeks, my discovery revealed 25 separate websites across 5 different content management systems (CMS), hosted in 10 different servers and locations. Websites in the same CMS platforms were on different versions of the same CMS as well as infrastructure patching schedules. There was no form of source control nor any consistent configuration around the administration services. These complexities not only led to continual issues that had to be managed daily but in turn tied up development resources from focusing on other work. The conclusion was clear that over time the management of the web CMS systems and IT resources would continue to bloat cost and time to delivery on new projects.

What seems like the right idea: As these problems continue to come up, I recall this being presented in ideas and exploration, “Let’s just put more people on all of these to get them updated. The issue with the easy decision, however, is that the one-time fixes only prolong the root problems. You may have very sharp employees that are more than capable of knocking out these odds and ends jobs, but as any other updates begin to repeat themselves, the cycle repeats itself once more.

The Enterprise Solution: After all research had been done, the answer was clear: consolidating websites down into the same CMS would reduce the ongoing people support issues while improving the time to delivery on projects. The CMS itself needed to be a platform that allowed for scalability and ease of configuration. Finally, automation was going to be key in how it would assist in accomplishing operations and tasks that reduced unneeded internal labor.

The Results? 80% overall savings: After a 2 1/2-year transformation, 25 external websites were consolidated into WordPress via WP Engine. WP Engine was our manage services platform of choice, providing enterprise capabilities for all sites with a single pane of glass CMS management experience. Comparing against the 3-year cost-to-date prior spend of 1.5 million dollars we were able to move all sites and cover hosting in a single platform and cover it all 20% the cost. We not only realized cost savings to give dollars saved back to the business but was able to reallocate 2.5 FTEs worth of employees’ time onto other transformative efforts.

In addition, not only did we improve our hosting and patching automations, but we also enabled development pipelines from source control to have a controlled deployment strategy that went across multiple environments. This empowered a level of Quality Assurance testing and site monitoring we had yet to achieve.

Customer feedback: Our website editors and stakeholders were beyond thrilled to have only one editing experience to learn and use day to day. Our support teams were also happy, and our overall calls and reported issues were reduced!

Enterprise principles that supported my decision:

  • Consolidating competing CMS technologies allows for the management of a single platform
  • Leveraging a managed services platform allows a hands-off approach from development resources with ongoing maintenance; maintenance becomes core to the platform and is more easily managed
  • Developing your code within a source control platform allows for version management and prepares you to start considering your deployment strategies

Enterprise ROI savings can be realized by:

  • Retiring dedicated or hosting infrastructure
  • Reducing editor licenses in separate CMS systems
  • Removing extra 3rd party dependencies specific to an unneeded system
  • Removing unneeded external resources and/or support services costs to assist with troubleshooting
  • Leveraging your existing resources to be focused on new development and no longer in maintain mode

Regardless of your end decision on a specific product set to support your development team skillsets, one of the keys to drive repeatable enterprise development is to align decisions around simplifying management and driving automation of patching and version upgrades. CMS companies that thrive in licensing will nickel and dime you to bits on progress that you’ll never achieve with always fighting against yourself within their own products. If you’re not able to click less than 5-7 clicks to deliver a fully automated blank site to use, then reconsider your options. Make it a goal to center your platform decisions around their ability to leverage automation in how you can reduce unneeded activities. Automation will empower your staff to focus on new development.

HTML, JavaScript, Troubleshooting, Web, Wordpress

SOLVED: Contact form 7 Submission Won’t Send, Stuck on Spinning Wheel

In a recent update on WordPress CMS and my existing plugins I noticed that form submissions started slowing a bit on entries. In checking this I found that the form would attempt to submit but would stay in a spinning stage and never validate or submit it.

So, here’s what I did to update for a fix.

1) Head to the plugin editor, update the link below:

https://yourwebsite.com/wp-admin/plugin-editor.php?plugin=contact-form-7%2Fwp-contact-form-7.php&Submit=Select

2) Look for the section:

if ( ! defined( 'WPCF7_LOAD_JS' ) ) {
	define( 'WPCF7_LOAD_JS', true );
}

3) Update this to:

if ( ! defined( 'WPCF7_LOAD_JS' ) ) {
	define( 'WPCF7_LOAD_JS', false );
}

4) Clear cache and try your form again. a good way to see if the spinning wheel issue goes away is if your required fields respond.

Caveats:

  • The form will no longer send with ajax since you have disabled the javascript.
  • If you update the plugin in any way and have the problem again you will need to reapply this change.

You can keep up with the ongoing reference to this issue on Contact Form 7’s website.

10/30/20 Update – Should you want to get out of having to update the plugin directly, you can set a constant in your wp-config.php file to set it and forget it. Link below! 

HTML, JavaScript, Web, Wordpress

Need A Quick CSS Override On Just One Page Via JavaScript?

Found this to work really well for a WordPress custom theme where the only option I had was to drop an override via a header/footer plugin option:

<script>
var ref= window.location.pathname;
var search="/youruniquepagelink/";
if (ref.indexOf(search) > -1) {
let myElements = document.querySelectorAll(".your-class");
for (let i = 0; i < myElements.length; i++) {
	myElements[i].style.display = "none";
}
}
</script>
HTML, Intercom, JavaScript, Web, Wordpress

So You Only Want Intercom Chat On Certain Pages In WordPress? Here’s How!

So I had a client want to use Intercom. Great! So I went to Intercom and signed up for an account, then went to our WordPress instance and downloaded the Intercom for WordPress plugin. Everybody wins! Until…I get the requirement after the fact that the client does not want the chat pop up on every page…but only on certain pages. However, the out of the box Intercom for WordPress plugin is only built to be supported for all pages and not some. What to do…what to do…let’s figure it out.

First, login into your WordPress (.org version) as an admin and uninstall the Intercom for WordPress plugin. Next install the Head, Footer and Post Injections Plugin:

Once installed, go to the Head, Footer and Post Injections plugin settings and insert the following script injection into the Desktop and Mobile (Check the Mobile checkbox) BEFORE THE CLOSING TAG (FOOTER). 

<script>
var ref1= window.location.pathname;
var search1 = "/pagepath1/";
var search2 = "/pagepath2/"; 
if (ref1.indexOf(search1) > -1 || ref1.indexOf(search2) > -1)
  window.intercomSettings = {
    app_id: "YourIntercomID"
  };
</script>
<script>(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/nna8fbly';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})()</script>

Save the plugin settings. This JavaScript will check on the specified page paths and only execute turning on Intercom for the specific page paths. Hope this helps!

Certificates, Web, Wordpress

Redirect All HTTP to HTTPS in WordPress with .htaccess

I recently had a request from a client to transfer all web traffic on some WordPress site (www or no www) to all be forced over HTTPS. And with all of the up and coming security issues that stem from HTTP-only traffic it is a must. Why you ask? Well, unless you are explicitly doing this already users may able to browse and intercept traffic from your site with no encryption. If you have a SSL certificate but have not done this to your WordPress site then please do so!

Edit your .htaccess file and append this somewhere at the bottom (and change your website URL to the URL that is associated with the SSL certificate):

RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://www.example.com/$1 [R,L]

After this you should see all browsing of HTTP to your site to be automatically redirected to HTTPS. Note: in some cases you will have to update all the links and content of your site to use links that are HTTPS also. There are useful plugins out there that can assist with doing a bulk conversion of this. Otherwise you users will not get the padlock icon on the page (or even cases where the page will not render entirely). Happy securing! Hope this helps, questions are always welcome.