Why I Use and Recommend WP Engine for WordPress Hosting

WP Engine Homepage

The team over at WP Engine recently asked me if I’d be interested in doing a Q&A for their blog. I was more than happy to do so, and it got me thinking about their company and what they do. I’ve worked with a lot of different web hosts over the years and all of them have their pro’s and cons – whether it be pricing, support, server configurations, or just the overall experience.

I’ve had good experiences and bad, but WP Engine stands out as one of the best hosting providers that I’ve worked with. While I’ve had good experiences with other hosts, it’s rare to find a host that provides great service and holds each customer relationship to such a high regard. Here are just a few reasons why I host my WordPress sites with them, and why I recommend them when people ask.

Speed and reliability

The technology that WP Engine uses is designed specifically for WordPress, and their server stacks can handle any amount of traffic. I’ve seen some large traffic spikes in my analytics, but would have never known based upon the performance – which was still snappy and quick. They use top quality hardware, and spread web requests and database queries across multiple servers.

On top of that, you don’t have to worry about configuring any caching plugins. WP Engine uses technology that was created by their team called “EverCache”. They claim that this technology outperforms just about any caching plugin (including WP Super Cache and W3 Total Cache) and based upon the performance that I have seen, I believe it. And it’s all configured automatically – both server side and client side. You’ll still have to minify your scripts and stylesheets, but that’s a piece of cake.

If you’re looking for an example of these fast loading times, just check out the page load times on my site.

They offer a CDN

I haven’t seen any other host that offers a solid CDN right out of the box. WP Engine does. They work with NetDNA to provide a fast, reliable CDN. You don’t even have to get your hands dirty setting it up, as it is all configured automatically. This point could be bundled with the one above, because it also contributes to better speed and reliability, but I figured it was worth its own section.

Support is knowledgeable, helpful, and friendly

To me, support and communication is just as important as the technology. And again, WP Engine does a great job with it. Although they are not available 24/7 (except for emergencies), I have never had an issue waiting for someone to help me out.

Not only are they prompt, but they are also extremely knowledgeable. Their entire support staff is made up of WordPress experts. They’ve helped me tackle some issues and offered suggestions for problems that were caused on my end – not a lot of hosts will go above and beyond like that.

And to top it all off, they have always been patient and friendly whether it be via their Support Dashboard, Twitter, email or phone. I guess you could say I like those guys and gals.

One Click Staging Site

This is one of my favorites. WP Engine offers the ability to create an exact copy of your live site, at any time, with one click of a button inside your WordPress Dashboard. You can push your changes to this staging site, test things, break things… All without affecting your production site. When you are running a public facing site, this feature is priceless. You don’t have to be nervous updating themes or plugins, or making changes to your site. Try them on your staging site first, make sure they work, and then push to your live site. And you can reset your staging site at any time with one click. It’s awesome.

Git Integration

I use Git for version control, so I was happy when WP Engine fully integrated Git-Push-To-Deploy into their hosting platform. You can push changes to your staging site or your production site… or both. All you have to do is open a ticket with your SSH public key and which install you’d like to associate them with and then you can start utilizing all the Git goodness. Pretty rad.

Peace of mind

WP Engine secures every site they host. They constantly scan their servers and make sure no malware or security holes are present. They also fix your site if it’s hacked – for free. Backups and restore points are automatically created daily, and you can manually create one at any time with a couple of clicks. And this is included with any plan.

It saves time

With all of these features (and more) I find myself spending a lot less time with server issues and maintenance. WP Engine will even update your sites when a newer version of WordPress is available. For example, when 3.5 was released, I received word from WP Engine that they would be testing the latest version of WordPress, and then pushing the updates to all installs. They notified me beforehand so I was able to test 3.5 on my staging sites. After making sure everything was in working order, I easily updated to 3.5 on my production sites. It was the most seamless update I’ve ever completed. And for minor releases (3.5 to 3.5.1 for example) WP Engine handled it automatically without a hitch.

I don’t have to worry about taking manual backups, or regular server maintenance. They take care of it. Pretty rad.

They are active in the WordPress community

Another thing that I like is the fact that I often see WP Engine active in the WordPress community. Whether it be on Twitter, at WordCamps, or just exchanging ideas with other WordPress enthusiasts. Hell, I don’t even think Austin sleeps.

Affiliate Program

They also offer a very generous affiliate program. If you sign up for the WP Engine affiliate program you’ll receive a minimum of $150 per referral. It doesn’t matter which plan, the payout is at least $150+. I would recommend them either way, but it’s nice that they offer the affiliate program, too.

Note: The links to WP Engine in this article are affiliate links. It will cost you nothing extra, but I will make a commission if you buy hosting through them. Affiliate links or not, I stand by everything written here and would feel the same either way.

WP Engine – Conclusion

Suffice to say, I like the team and the service over at WP Engine. They offer solid WordPress hosting, awesome support, and they are easy to work with. Go check them out. And if you’re looking for hosting now, they’re offering two months free when you prepay for a year. They don’t lock you in to any contract, and they also offer a 60-day money back guarantee. So if you’re unhappy, you can get a full refund.

Have you worked with them before? Or do you have a question? Whether positive or negative, let me know in the comments below.

Set WordPress Featured Image as Facebook Thumbnail

If you have a WordPress blog, odds are that you are sharing your posts on Facebook and other social media websites. Some of these sites allow you to include a thumbnail image and description when you or your visitors share posts. For example, when you paste in a URL on Facebook or LinkedIn they will pull an image (if available) and description from the page. At first glance, it may appear that you don’t have much control over this.

However, both Facebook and LinkedIn utilize the Open Graph Meta tags (For more info about the Open Graph API in general, check out David Walsh’s Facebook Open Graph META Tags article.). If you take advantage of this, you can control which image and description is pulled by default.

How can I use Open Graph Meta Tags with WordPress?

It is a pretty straightforward process to add the required meta tags. First, we need to allow for Facebook markup in our opening HTML tags. In this example we are going to add a few filters in our functions.php  file to accomplish this (Note: you could also add the appropriate code to your header.php):

Now we can add the Open Graph meta tags just like regular meta tags and use WordPress’ Template Tags to fill them in. Here’s an example:

Most of the tags are pretty self explanatory, but feel free to ask questions if anything is unclear.  If you wanted to avoid touching your theme files, I’ve packaged this into a simple plugin that you can use as a starting point.  You can see the full code for the plugin here (the zip also contains a screenshot and a readme):

And you can download it from the WordPress Plugin Repo: Facebook Featured Image and Open Graph Meta Tags

Things to consider:

A lot of plugins and themes already include some or all of this functionality. For example, WordPress SEO by Yoast takes care of this for you. A lot of themes will also do this by default. To avoid redundancy you should check to see if the Open Graph tags already exist on your site. All code contained in this post is to be used on an “As-is” basis, and may contain errors. If you notice any, let me know!

References

Facebook Featured Image and Open Graph Meta Tags
by Ryan S. Cowles

This plugin will add the necessary Open Graph Meta tags to automatically set the posts’ Featured Image as the thumbnail for sharing on Facebook and LinkedIn. It will also set Open Graph Meta tags for title, description, URL, type, and site name.

Stats:

  • Current version: 1.0.1
  • Rating: 82(10 ratings)
  • Downloaded 21,702 times

How to include hashtags with Facebook’s share function

A little while back I ran into a problem when trying to allow users to share a page on Facebook. I wanted to include hashtags with Facebook’s share feature in the URL. The page loaded content via AJAX, and appended a fragment identifier (#) and a short string to the URL. When user’s tried to share this page, the hashtag and the rest of the string was being stripped. A quick Google search pointed me to a post on StackOverflow that revealed that I wasn’t the only one who couldn’t figure this out.

After pulling out my hair, the answer came to me. Encode the hashtag – replace # with %23 in the URL. For example, replace:

with

This may seem simple – and it is – but hopefully it can save you from some unnecessary frustration.

My experience with Website Movers

I have been maintaining a WordPress install that outgrew it’s shared hosting plan. I opted to move to WP Engine, as I’ve worked with them a lot in the past and have always been very happy with their service (Note: WP Engine is not at fault here, Website Movers is a third party.). The site I was planning to migrate was decent size (~1,500 posts spanning several years with pictures, media, etc.) but nothing out of the ordinary. I wanted to save some time and make sure the migration went smoothly, so I opted to outsource it. WP Engine recommended using Website Movers for the migration. Website Movers estimated the process would take 2-3 hours, and WP Engine comps the first two hours. So, it looked like we would be paying for 0-1 hour of work at $109/hr. We decided to move forward.

Preparation

Prior to migration, Website Movers suggests running a plugin called WPEngine Ready. This plugin looks through your install and alerts you if there are any plugins that WP Engine disallows. I ran the plugin and made sure that my install was compliant with WP Engine’s hosting. Easy enough.

Migration

Website Movers started the migration – Dumping the database, downloading all the front end files, etc. They then setup a test server. I was able to view the test server and make sure everything was working. After confirming that it was, we set aside a time to complete the migration. The final step would be to update the DNS records to point to the new hosting. They told us that DNS propagation would take 1-6 hours. We arranged a time to do so (a Friday). I made sure all of our authors would NOT make any changes for the entire day Friday to ensure the DNS information propagated.

They said they made the change on Friday before noon:

[Website Movers] Fri, 2 Nov at 11:46am
Hello Ryan,
I’ve finished the database sync, but the website content synchronization still in process. I’ve already switched the DNS. Please note the DNS changes may take up to 4 hours to propagate all the world.
Thank you.

The Results

Monday morning came around, and the site was still not pointing to the new hosting. I sent a message to them letting them know that it had been 72+ hours since they should have made the DNS switch but nothing had happened. I didn’t get a response. However, 15 minutes later, our entire website was down with a general Server Error. I got on the horn with them (after multiple attempts – they were having phone problems, as well) and told them the situation.

They told me to purge my browser cache, as it was working on their end. I purged my cache, and still nothing. I also got confirmation from three of our team members working remotely who said the entire site was down for them as well. I contacted Website Movers once again, and they said they would look into it.

They did manage to get the site up and running, but were unable to tell me what the problem was. At this time, the URL’s for our subpages were incorrect as well – After fixing that, they said it was a “gesture of good will”… Personally, I thought that was part of migrating a site. On top of that, some of our content was missing. I told Website Movers this, and they offered the following reply when asked if they could sync the data (as that was part of our initial agreement). I received the following response:

[Website Movers] Mon, 5 Nov at 12:09pm
Ryan,

We will need 1 additional hour approved ($109) to backup the configuration and perform the sync today. Please let me know if you wish to proceed.

Thanks!

They wanted $109 to fix something that should have been done as part of the migration. That didn’t seem very fair to me. I then sent them the following message:

Mon, 5 Nov at 12:38pm via email
Hi [redacted],

What was the server error then? The migration was not completed Friday as
was agreed upon.

Thanks,
Ryan

And they said:

[Website Movers] Mon, 5 Nov at 12:53pm
Ryan,

The server error at your website was related to the plugin jetpack which is not compatible with your hosting account.

Thanks!

That seemed strange to me, as I ran the WPEngine Ready plugin and Jetpack never brought up a warning. I checked WP Engine’s disallowed plugins list and Jetpack was NOT on there. Jetpack is actually endorsed and curated by WP Engine. They blatantly lied to me about the issue.

I followed up:

Hello,

I just wanted to say that Jetpack is not on the Disallowed Plugins list for
WP Engine. In fact, it is actually on their Curated Plugins list:
http://support.wpengine.com/curated-plugins/

Could you please investigate and let me know what the issue with the
transfer was?

Thanks,
Ryan

And they responded:

[Website Movers] Mon, 5 Nov at 6:19pm
Ryan,

Unfortunately we cannot continue working on your migration project unless you wish to approve some additional time. Please let me know if you have any questions or wish to discuss this with our sales representatives.

Thank you.

So… Not only can they not provide me with an answer as to WHY things went wrong, but they won’t even talk to me. I got on the phone again. I was told that a senior tech support agent would call me in 30 minutes. Four hours went by and I didn’t hear a thing and Website Movers had since closed for the day. I spent the rest of the night manually migrating content from our old install to the new.

The next morning I did get a call from one of their senior tech reps, and he did genuinely try to help. He investigated things on his end, but still couldn’t seem to provide any answers. He said that he would comp us one more hour of work for migration… But when I asked how much time total they needed, he then estimated it would take 3-4 additional hours. By this point, I had already migrated the remaining content manually myself, and I had wasted far too much time on the phone getting the run around. I decided to cut my loses.

Website Movers Review Conclusion

I understand that with anything web related issues can arise, and there is no bulletproof way to migrate a website. DNS records can take awhile to propagate, servers can get disconnected, etc. But the lack of accountability on Website Movers’ end is what frustrated me. The amount of time wasted on both sides could easily have been avoided if they were upfront about the issue and willing to work with me. Instead, they just denied everything.

I did talk with one of the execs at Website Movers, and shared my frustrations. He told me that he was sorry I had a bad experience, but when it came down to it, I got a free migration (Because WP Engine comped the first three hours). That irked me. It wasn’t free. I spent more than two full working days to solve this issue. I also had to manually complete parts of the migration myself.

I don’t like to badmouth anyone, but I felt that other people should be aware of this experience. Granted, even with my complaints, this was one isolated incident. Have you had an experience with Website Movers? Good or bad, I would love to hear.

Add a category image to a WordPress loop

I recently wrote an article for Search Engine People on how to set a fallback image for featured images. Shortly after writing that I ran into a situation on my own site that required a slightly different solution. Instead of grabbing the first image from the post as a fallback, I wanted to set a fallback based on category. For example, if I have a post in my WordPress category that doesn’t have a featured image set, the WordPress logo will accompany the excerpt in the loop by default. I was able to accomplish in just a few short steps. I’ll show you how to add a category image to a WordPress loop.

Category Images

First, I had to create the images I wanted to use for my categories. I saved them all as JPG‘s with the category slug as the filename (e.g., wordpress.jpg for my WordPress category and web-development.jpg for the Web Development category). I then uploaded these to a new directory called cat-images in my theme’s images folder.

Calling Category Images in a Theme

Now the images are uploaded, but we still need to call them in our loop. If you are trying to insert them in your main blog feed you will probably find the loop in loop.php, home.php, front-page.php, or index.php.

First, let’s see if our post has a featured image set for it. If it does, let’s return it and be done with it:

Then, if the post doesn’t have a post thumbnail associated, let’s grab the corresponding image we uploaded:

After that, we just have to close our if statement:

Now, let’s put it all together:

Variations

If you don’t want to use featured images in your loop, and instead just want to return the category image for all posts, you can strip out most of the code and just use the following:

Things to Watch For

If you see broken images shown in your loop, there is probably an incorrect path or filename somewhere. Make sure that the folder name in your theme’s directory matches the exact name and path as in your loop. Also, make sure the filenames of pictures are the exact category slugs (Pay attention to capitalization and file extensions).

Conclusion

Now, whenever you have a post with no featured image set, it will return the corresponding category image. Want an example? Just check out my main blog page. Have you done something similar, or have another way of doing this? Let me know!

References

WordPress Codex: has_post_thumbail
WordPress Codex: the_post_thumbnail

Set a fallback image for WordPress Post Thumbnails

I recently wrote this article for Search Engine People, and figured that others may find it useful. It explains how to set a fallback image for WordPress Post Thumbnails.

Intro

One of the countless things that I love about WordPress is how easy and efficient the process of adding new content is. All you have to do is provide the art and copy and your theme will take care of the rest. While this workflow is usually smooth, there are times the end user can miss a step or two. I’ve noticed when working on larger sites with multiple authors one of the most common things to slip through the cracks is setting a featured image. While this shouldn’t break your theme, it can create layout inconsistencies or (shudder) broken images. Lucky for us, we can easily provide a fallback, and I’ll tell you how.

WordPress Post Thumbnails

Post Thumbnails were introduced in WordPress 2.9 [Source: WordPress Codex] and have since become somewhat of a standard for theme developers. If a theme declares support for this functionality, it allows authors to set an image that will represent Posts, Pages, or Custom Post Types. How this image is utilized is completely dependent on the theme. A lot of themes will use a featured image to accompany excerpts, but that’s just one example.

Read the rest of my article over at Search Engine People.

Hello world!

WordCamp Los Angeles 2012I attended WCLA this past weekend and had a great time. It was my first WordCamp, so I wasn’t sure what to expect. I learned a lot, and met a ton of great people. I’ll definitely be going to more in the future.

The guys over at WP Engine hooked me up with a free hosting account, so I figured it was about time that I put together a brand new WordPress website for myself. While I will still [try to] maintain my photography blog over at Metacom Creative, I will probably be focusing a lot more attention on this site. You’ll find me building and breaking things and sharing what I learn in regards to WordPress and web development.