Stay ahead of the curve with expert updates on server technology, security protocols, and performance optimizations. This section covers essential hosting advancements, from PHP and MySQL upgrades to practical tips for securing and scaling your online presence.
We’re currently migrating all our servers to MySQL 8. Learn more about the migration process in our blog post.
Two of the most frequent reasons a site might be slow are unoptimized PHP processes and heavy MySQL queries. Website code optimization is always a crucial part of the constant battle for more website speed. However, webmasters hosting with SiteGround, have always had a reliable ally by their side in this quest.
Recently we have announced the new Ultrafast PHP, which significantly speeds up the processing of PHP scripts and improve the website performance up to 30%. As a natural next step in our efforts to offer a premium and superfast service, we deployed a server-side solution to optimise database queries which has already brought down the number of slow queries between 10 and 20 times!
What are slow MySQL queries and why they matter ?
If you are managing an active site with a database, you probably understand that when a visitor enters your site, there are tons of scripts that start running, some of which ask your database for information. For example, if you have an online shop and a visitor is trying to purchase an item, your store should check for its availability in the database and display if it’s possible to be ordered. That check triggers a MySQL query. And depending on how that query is written it may be quite heavy and time-consuming to be processed by the server. For you as a webmaster, these slow queries are a problem because you will be losing clients. You know how visitors drop out of the site when they have to wait longer than 2-3 seconds for a page to load? Well, you get it. For us as your host, we don’t like it when our servers get throttled processing too many slow queries because this means that the CPU and RAM of the machine get blocked and cannot be used for other processes, which are also important for yours and the other websites hosted on the server.
What did we do?
The battle with slow MySQL queries is an ongoing process, which involves both the webmaster and the host. That is why we recently launched a new MySQL setup on our servers, which takes an innovative approach to distributing the server RAM and allocating it to the MySQL. The new setup allows a much higher number of parallel requests to be processed simultaneously and this has a great impact on the effective handling of heavy MySQL queries. So great that the Sys Admins, watching the server load after the new MySQL setup launch, still don’t believe it – they saw a drop in slow queries between 10 and 20 times!
All of our latest service improvements such as the Ultrafast PHP and now the MySQL setup are possible thanks to two things – the Google Cloud platform and the switch from cPanel to Site Tools. Since moving to Google Cloud, we upgraded our server configurations with more RAM. The RAM unit price is not cheaper, but working in the cloud offers possibilities for better distribution of that resource among different machines. And the fact that we don’t comply with third-party’s software resource requirements such as cPanel, gives us more freedom to innovate. Our DevOps feel empowered to create and keep developing smart technologies that benefit the greater majority of the sites we host spot on!
Who gets it?
Everyone hosted on our shared Site Tools servers already got the new MySQL setup! If you have been seeing an enhancement in the performance for the last week or so, it’s because of the new setup.
That means it’s less likely that you hear from us asking you to fix a slow query and “socially-distancing” your site due to that. Fewer slow queries, faster servers, less hassle for you!
Cloud accounts are also scheduled to receive the new MySQL setup by the end of February, 2021.
Still a SiteGround client on cPanel? We expect to migrate everyone by the end of March 2021 so all you need to do is wait just a little bit longer.
We are happy to announce that we have deployed and enabled by default the Brotli compression algorithm on our Site Tools servers so websites hosted there could get up to 15-20% speed gains from using it.
What is Brotli?
Brotli is a next generation compression algorithm developed by Google as a successor to the popular gzip method that we’ve had running on our servers for ages. The idea is simple – once your application produces the HTML output of your website and the output is compressed together with all the resources it loads, the data is transmitted over the Internet and then the browser decompresses the content before rendering it. This process significantly reduces the size of data that’s been moved from the server to the visitor, resulting in speed gains multiple times bigger than the milliseconds lost for compression and decompression.
How much faster is Brotli compared to gzip?
The new algorithm provided by Brotli compresses the website into smaller data size, which makes it faster to transfer. JavaScript files compressed with Brotli are roughly 15% smaller than the ones compressed with gzip. HTML files are around 20% smaller and CSS files get around 16% size reduction. Those numbers of course will differ depending on your particular files.
A test with one of the WordPress’s default themes – TwentyTwenty shows that it produces a 19584 bytes of data uncompressed, 6003 bytes compressed with gzip and only 4863 bytes when compressed with Brotli! This means that you get more than 75% reduction in size from uncompressed content and 19.5% from gzip.
How to use Brotli?
We have enabled Brotli on all our Site Tools servers and if your account is hosted on one of these, your site will automatically take advantage of it. You don’t have to do anything to get it! 🙂 Browsers that support Brotli compression, which are the majority of the browsers now, pass the appropriate “accept-encoding: br” header when performing the request and get the Brotli-compressed content. Older browsers that don’t support it will be served with gzip-compressed data. If you are still hosted on a cPanel server, don’t worry – we expect migrations to Site Tools to be completed by the end of March 2021 so you won’t have to wait long to get it as well.
“What the heck is a cron?” I field this question at least once a month from non-developers. It’s a great question. I’m going to break it into two questions though.
“What is a CRON?” “What is WP-CRON?”
What is a CRON?
At its heart, a cron is a “time-based scheduler”. It handles tasks that need to be done on a regular basis and at a specific time. As an example, if you want your WordPress blog to display the weather forecast in the header, then each morning you need to go get the weather forecast. Yes, you could hire someone to log in each morning, go get the forecast and paste it into a widget.
A better plan is to have a program that runs each morning and talks to an API to fetch the day’s forecast and update your database for you. The program that runs your weather fetching program is called a CRON. The name is derived from “chronological” which roughly translates into “in order of time”.
Most systems these days have some concept of a cron. Unix based systems (Unix, Linux, macOS, etc.) actually have a version of a traditional cron. While some might put a nice graphical interface on them, they all boil down to a program named cron and a file named crontab.
The program cron is always running in the background and every minute it looks at the crontab and figures out if something needs to be done. If not, it goes back to sleep.
The crontab file contains when a program should be run and which program should be run. Each line represents a different task. They look something like this.
1 0 * * * ~/fetchForcast.sh
While this may look cryptic, all it is telling cron is that at 12:01 AM every day, run a program called fetchForcast.sh. Note that time added in the Cron tool is in UTC by default. Here is an easy guide to reading a crontab.
# ┌───────────── minute (0 – 59) # │ ┌───────────── hour (0 – 23) # │ │ ┌───────────── day of the month (1 – 31) # │ │ │ ┌───────────── month (1 – 12) # │ │ │ │ ┌───────────── day of the week (0 – 6) (Sunday to Saturday; # │ │ │ │ │ 7 is also Sunday on some systems) # │ │ │ │ │ # │ │ │ │ │ # * * * * * 1 0 * * * ~/fetchForcast.sh
Now that you have the key, it’s pretty easy, huh?
That really is all there is to a traditional cron. Most hosts like SiteGround allow you access to the cron for your system. Sometimes you have to edit the crontab manually, but many hosts have a much better interface for you to use. Either way, you have the ability to run programs at a specific time and on a regular basis.
What is WP-CRON
Like most things, WordPress does things just a little differently. Because many plugin authors needed to be able to schedule things to happen regularly, and because many WordPress site owners don’t know where their crontab is, much less how to edit it, WordPress re-invented the cron.
At its core, WP-CRON acts like a traditional cron in that a developer can “schedule” a task to be done on a regular basis. However, unlike a traditional cron, WordPress does not have a program that is always running in the background of your server. So to make this world, WP-CRON is a process that is called every time a page is viewed.
On busy sites, this works fine. However, if your site isn’t busy, a task scheduled for 2:00 AM might be run at 5:24 AM if nobody visits your site until then. Sometimes this is ok, other times this is a problem.
If the tasks you need to run are time-sensitive and have to be run at the time scheduled, WP-CRON is not the scheduler you want to use. If on the other hand, the tasks you need to be done can happen “around” the time you schedule them, then WP-CRON is fine. Again, a lot depends on how busy your site is.
What are the alternatives?
If you have tasks that are time-sensitive and your host does not allow you access to the system’s cron, you have 2 alternatives. First, you can switch to a host like SiteGround that gives you this access. If that’s not possible, then there are several services free or paid that are nothing more than cron services.
They run cron and you can set a job to run via a nice web interface. The job would use a program like curl or wget (think of them as headless browsers) that call URLs on your site to fire a specific task. Most plugins that require a cron will give you the URL to call if you want to use an external cron. All you have to do is paste the URL in, set the time for it to run and you are done.
CRON is a valuable tool and once you understand how to work with it, you will find more uses for it. If you have plugins, then I can almost guarantee that your site has wp-cron jobs running. If you are curious, go to the WordPress plugin repository and search for cron. There are plugins you can install that will show you all the WP-CRON activity on your site. Be very careful though. Plugins set these for a reason. If you decide you don’t like one and delete it, the plugin that depends on the job will stop working.
Your online reputation is one of your most precious possessions. Because of this, you need to do everything in your power to protect it. The problem is that the more powerful your reputation becomes online, the more that people with bad intentions want to take control of it and use it for their own purposes. Nowhere is this easier online than email.
Email started as a trust system. I trust the email server I used to send my email. It trusts any number of servers to help deliver the email along the way. The recipient of my email trusts their email server.
In the beginning, email didn’t necessarily go from you to your server, to your recipient’s server, to your recipient. The internet was still fragile, so email was designed to hand mail to any server and trust that that server would either deliver it, hold it until it could deliver it, or hand it off to another server for delivery. Trust, however, has a price, and once bad people figured out that email was based on trust, they started making us pay that price.
Because bad people figured out they could send emails that look like they are coming from anyone on the Internet, people much smarter than me knew they had to do something to secure our email system. If someone could send you an email that said it was from your mom, and that email contained a link to show you cute puppies, you trusted that it was from your mom, so you clicked the link; thus Phishing was born.
These days, email is a lot more secure. The smart good people have figured out ways to build technologies like Sender Policy Framework (SPF) and DomainKeys Identified Mail (DKIM). These systems help protect emails by protecting who can send emails for a given domain. If you have SFP and DKIM setup, most email servers will recognize them and use them to make sure that the email it just received that SAID it was from you, actually IS from you.
The biggest problem with SPF and DKIM is that they are not easy to setup. To configure them, you need to understand DNS and how to create specific types of records. This has hampered the widespread adoption of these concepts in the past.
Thankfully, these days, there are good hosts like SiteGround.com out there that set them up for you automatically. When you set up a domain on a good host, one of the things they do is not only set up your mail system but also set up SFP and DKIM to protect others from fraudulently sending emails that look like they come from you.
If your host does not automatically set up DKIM and SPF for you then all is not lost. There are many good tutorials available and with some time, you can set them up yourself. There are even online checkers you can use to make sure you have done it correctly.
Or, if you’ve got better things to do with your time than figure out DNS, you can host with a host like SiteGround.com. Your call.
Speed is one of the pillars of our hosting services and wе’re constantly working on making our infrastructure faster and more reliable. One of the essentials for a fast loading speed is the way the PHP is handled on the web server and now, with our new Site Tools platform and without the constraints of the old system, our DevOps team got the opportunity to develop a new and ultrafast PHP setup that is up to 30% faster and as secure as everything we do.
Ultrafast, yet Super Secure PHP Setup
On its own, running a fast PHP is not a difficult task. However, if you want a fast, stable, and secure PHP while supporting Apache and the variety of .htaccess rules defined by users and apps, things get complicated. We wanted to solve these problems and at the same time increase the page loading speed and improve the server stability during traffic spikes. So once we released the new Client area and Site Tools and got rid of major constraints that our old platform was putting on us, modifying our PHP setup became one of the priorities of our DevOps team.
After several iterations, we managed to overcome the biggest “speed over security” challenge and delivered a fast PHP with our WAF and account isolation integrated, thus getting better performance results without compromising with security. The new implementation is super fast, secure, and efficient.
Our Ultrafast PHP vs Our Standard PHP
While the new, ultrafast PHP setup is faster and is recommended for websites with a lot of traffic, the standard PHP setup provides some extra flexibility for PHP versions and variables management.
Our Ultrafast PHP – Recommended for Well-visited Sites
The websites that will benefit most from the ultrafast PHP are those that get solid traffic and may be experiencing resource deficit on the current plan they use. Based on the preliminary statistics we have run, we see the following raw data:
Faster page response: up to 50% drop in the TTFB (time to first byte), which will make your pages load faster than before.
Increased server capacity: the host node will be able to process about 20-30% more requests, which means it will be able to handle traffic spikes even better than before.
Lower server memory usage: up to 15% drop in the memory usage, which again vacates server resources for handling more of your traffic faster.
Expected overall performance improvement: currently the new, ultrafast PHP averages at being 30% faster than the old setup.
Note: the numbers above are average and are based on internal tests. Results may vary per site.
The new PHP setup is available for websites hosted on GrowBig, GoGeek and Cloud plans, as these plans usually host the type of sites that are most likely to benefit from the performance improvements it brings. It’s important to point out that it works for sites running on PHP 7.3 or higher and is not compatible with older versions. Furthermore, when using the ultrafast PHP service, all subdomains under your site will inherit the PHP version and variables settings from the site’s primary domain.
Our Standard PHP Allows Different PHP Settings for Each Subdomain
The standard PHP setup is the one all StartUp accounts use. It is also available as an alternative to the ultrafast PHP setup on Site Tools-based GrowBig, GoGeek and Cloud accounts. Its performance is excellent for small and standard sites. Its biggest advantage is that it enables you to manage the PHP versions and variables separately for every subdomain in your site.
As the standard PHP gives more flexibility for experiments, all staging sites are set up with it too. So if you need to use an older PHP than 7.3 or you need a setup with different PHP versions and variables per subdomain, the standard PHP setup is the one for you.
How to Switch to the Ultrafast PHP?
All new sites created on Site Tools-based GrowBig, GoGeek or Cloud plan come with the new, ultrafast PHP switched on by default.
For existing sites hosted on Site Tools-based GrowBig, GoGeek and Cloud Plans, the ultrafast PHP is now available in Site Tools > PHP Manager and clients can instantly enable it from there.
If you are a SiteGround client and have a Site Tools-based StartUp plan, you may upgrade it to a higher plan to get access to the ultrafast PHP setup.
Is your agency spending a lot of time on busy work and repeating the same efforts time and time again, from one client to the next? Is the development team wasting a lot of their focus and mental energy on menial tasks and boilerplate work? What if you could free up some or all of these resources and invest them into the added value that the client will see and evaluate instead?
WP-CLI is a command-line tool that can help you accelerate the way you interact with WordPress websites. It is also a framework you can use to formalize and automate all of the processes that are shared amongst your clients if you’re a developer or an agency. Because of its versatility and simplicity of use, WP-CLI has been part of SiteGround’s preinstalled toolkit since 2013. SiteGround has also been one of the first sponsors of the project and continues to do so for the past 3 years, 2020 including.
One of the main reasons for SiteGround’s support is the fact that WP-CLI perfectly complements their mission to provide powerful, yet simple to use tools for WordPress processes automation and optimization. In fact, together with SiteGround, we released this awesome webinar for everyone who hasn’t had the opportunity yet to find out how useful WP-CLI can be:
As one of the main co-maintainers of the WP-CLI ecosystem, I was really glad to accept this new invitation from SiteGround’s and share some practical tips on how you can make use of WP-CLI to level up your workflows and have your clients get more bang for their buck!
Accelerating administrative efforts
WP-CLI is first and foremost a direct replacement to a WordPress site’s admin dashboard. Instead of providing a graphical web interface where you click through menus to get things done, it provides a text-driven command-line interface to perform these same tasks using written wp-cli commands. What at first sounds like added effort eventually turns out to be an infinitely more expressive way of letting the site know what you need to have done, and this makes it scale so much better for complex use cases.
As a result, while it is not necessarily faster to type a command to make a change to a post than it is to click the corresponding button on that same post, the difference becomes more apparent once you deal with multiple posts instead. While you might shudder at the thought of manually making a change on the admin backend to thousands of posts on a large site, all you need for doing so with WP-CLI still happens to be a fairly simple command, usually a one-liner. Granted, it will take a bit more time to execute than it would for a single post, but you can just leave it running in the background and focus on something else in the meantime.
To show an example of this effect, let’s imagine you have a huge multisite network with thousands of sites. An existing user has proven their worth in terms of helping moderate the entire network and is to be promoted to being an administrator on all the sites. How would you go about doing this via the graphical admin backend?
It turns out that this is quite easy to do via WP-CLI:
wp site list --field=url | xargs -n1 -I {} wp --url={} user set-role <user-to-promote> administrator
The above command will retrieve the list of all site URLs for the network, and for each of these sites, set the role of the user in question to that of “administrator”. And while this might take a few minutes to complete, it is a one-liner that does the work for you. Using the web-based admin backend would probably cost you hours to do the same, or require you to write a one-off plugin to do so in a more efficient way.
WP-CLI supports configuration files at the global level as well as at the project level.
The global configuration file is best used for defining a developer’s personal preferences. The project-specific configuration file however should best be managed centrally across the agency and treated as a part of the project, just like your composer.json file.
To use a project-specific configuration file, all you need to do is create a wp-cli.yml file within the site’s root folder. It will accept a few entries that are specific to configuration files, like providing an array of commands to disable for that specific site. But it will also accept default values for any of the available commands with a unified syntax.
Let’s look at an example configuration file for a hypothetical project:
# WordPress Core is installed in a subfolder.
path: wp-core/
# Load WP-CLI-specific init code before executing a command.
require: wp-cli-init.php
# Provide default flags for the config create command.
config create:
dbuser: root
dbpass:
extra-php: |
define( 'WP_DEBUG', true );
define( 'WP_POST_REVISIONS', 50 );
# '_' is a special value denoting options for this wp-cli.yml.
_:
# Inherit configuration from an arbitrary YAML file.
inherit: agency-defaults.yml
# Merge subcommand defaults instead of overriding.
merge: true
As you can see, it is pretty straight-forward to provide defaults for any known command. Also, you can load centralized YAML files within such a project-specific config file as well, if you need it.
After you’ve used the command-line for a while to deal with administrative site work, you might start to notice recurring patterns. Are you always installing the same set of plugins to get started? Are you deleting a set of options from the database every time you want to test the onboarding flow? Maybe you constantly need to reset a user’s meta values to trigger that one piece of logic in your member’s area that is constantly being changed?
Instead of needing to remember a list of multiple commands and hopefully typing them without spelling mistakes, you should take a minute and put these into a shell script to automate that work. After all, a shell script is nothing more than a “step-by-step replay” of doing something manually in the console.
As an example, here’s a script that will automate the installation of a new WordPress site:
#!/usr/bin/env bash
# Configure the script to exit immediately if any command fails.
set -e
# Download WordPress core files.
wp core download
# Create wp-config.php file.
echo "Please enter your database credentials:"
wp config create --prompt
# Install WordPress.
echo "Please enter your WordPress installation details:"
wp core install --prompt
# Install standard plugins.
echo "Installing plugins..."
wp plugin install query-monitor user-switching wordpress-seo
# Activate and configure a few plugins:
echo "Configuring plugins..."
wp plugin activate wordpress-seo
wp option patch update wpseo_titles metadesc-home-wpseo "My new website"
echo "Done!"
You can, of course, improve this script over time to add more bells & whistles or to give more precise feedback. Sharing it with all of the agency’s developers makes sure you only need to invest once into the automation part, for everyone to reap the benefits later.
Furthermore, a collection of such scripts makes for excellent onboarding help when new developers join your team.
Extending for custom use cases
With more complex projects come more complex administrative requirements. WP-CLI provides its framework to developers so they can easily create their own custom commands to solve very specific business needs in an efficient way.
Running bulk checks across the entire range of an online shop’s products? No need to build an extra user interface for that – just wrap the checking logic in a WP-CLI command and you’re good to go. Then, take it a step further and automate these checks by running that command at a recurring schedule via a cron job!
Note that you can either include these custom commands within a site’s plugin or theme, or you can publish them as a separate package that can be installed via WP-CLI’s built-in package manager:
While the range of commands bundled with WP-CLI already covers quite a few use cases, the possibility to build your own custom commands removes any remaining limits and leaves it up to your imagination only as to what you can do.
Executing tasks on remote sites
WP-CLI can connect to remote sites directly via the –ssh flag, provided that the WP-CLI binary is also installed and accessible on the remote machine:
wp --ssh=admin_user@123.456.78.90/var/www/my_site config set WP_DEBUG --raw true
What’s more, you can define aliases to denote the individual machines:
wp cli alias add @staging --set-ssh=123.456.78.90 --set-path/var/www/my_site --set-user=admin_user
wp @staging config set WP_DEBUG --raw true
The most powerful property of this is yet to come: you can group these aliases, and run a command on a group of machines instead of only a single machine. The built-in group @all is added by default, running the command on all the machines for which the alias was defined. But you can add your own groups that define a custom subset of machines. Groups can overlap, of course, and groups can contain other groups as well, letting you create an entire hierarchy of site management goodness! With these groups in place, you’ll do things like update all plugins on all staging sites, or add a user to all of your multisite networks, etc…
Browse to this link to learn more about connecting remotely to your servers or development machines.
Reaching for the black belt
To truly reap the biggest benefits from WP-CLI, you’ll want to combine the use of script automation, shared configuration, custom commands, and site aliases to ensure you cannot only address all of your agency’s usual needs but also do so at the exact point they are needed in one fell swoop.
Keep in mind that most of that work can be shared by and to all the members of the team. The return on the time you invest in this form of tooling will be multiplied by the members on your team that make use of them – it’s therefore very hard not to get a substantial benefit out of this!
In the end, optimizing the time it requires to deal with menial tasks and streamlining your workflows is what regains this time so you can use it where it matters most – creating value for your clients and gaining a competitive edge in a crowded market!
It’s that time again! WordPress 5.5 will be out today if everything goes as planned. I feel quite excited about this new version. I had the chance to be part of the magic that happened behind the scenes of this WordPress release as a mentor and I would love to share the most important WordPress 5.5 features and improvements that will soon come your way. Our customers will receive the new version shortly after its official release, as always depending on the individual settings in the WordPress auto-updater for each of their installations.
Security Improvements
Easy Control of Plugins and Themes Automatic updates
Since WordPress 3.7 users have been able to turn on/off WordPress native auto-update for their plugins and themes through their wp-config file. Now with WordPress 5.5 turning on/off plugin and themes, auto-updates can be done much easier by clicking a link in the admin interface.
Plugin Auto-updates
Most of the massive attacks on WordPress websites happen through outdated vulnerable plugins. That is why making the option for plugin auto-update so accessible to all users in the interface has the potential to greatly improve WordPress security.
To review the Plugins auto-update feature in WordPress 5.5 when it rolls out, go to “All Plugins”, and you will see a new column “Automatic Updates”. We highly recommend that you keep plugin auto-updates ON for all your plugins, as this is the easiest way to receive security updates as soon as possible and keep your site safe.
The SiteGround auto-updater also provides an option for plugin updates in its interface. We check for new versions of your plugins when we do core WordPress auto-updates and we do automatic backups of your WP installation right before the upgrade begins to guarantee a safe failover in case anything goes wrong. Choosing which plugin auto-update option to use is up to you: if you want to get your plugins updated as soon as a new version gets out, make sure you enable the new WordPress feature. It will work fine, regardless of the plugin auto-update setting in our own auto-updater. If you feel you better wait and get a backup before any update, you may rely only on our system.
Themes Auto-updates
Based on our experience, auto-updating themes can be a trickier process than auto-updating plugins. That is why we have not included such an option so far in SiteGround WordPress auto-updater. After all, changing something in the theme can change the outlook of your website and you may not want this to happen automatically without being pre-viewed by you.
Still, we believe it is a good idea to keep your themes up-to-date from a security point of view. The best way is to create a staging copy of your site when there is a theme update, check how your site with the updated theme there, and if everything is OK, update the theme on your production installation.
If you none-the-less want to switch on the themes auto-updates, you need to click on each theme you have installed and enable the option from the theme screen.
Speed Improvements
There are a lot of factors that determine the performance of your website. However, images are one of the main culprits when it comes to slow web pages. WordPress 5.5 introduces image Lazy loading as a default feature in the WordPress core. This is a great optimization that stops images from loading in bulk when you open a web page and load them gradually instead as you scroll through.
At SiteGround we have been big fans of Lazy Load for a long time. It is a feature we provide to our users through of SiteGround Optimizer plugin since 2018. Since we initially launched the Lazy Loading optimization we have been actively developing it adding support for iframes, videos, WooCommerce products, shortcodes, and much more. At this point, Lazy load options in the SiteGround Optimizer are more advanced than what is introduced in the WordPress core. That is why, for people that have Lazy load enabled through the SiteGround Optimizer, we will disable the native Lazy load.
SEO Improvements
Search engine optimization is always evolving and writing unique, useful content that responds to people’s search intents is still the main differentiator between websites that rank well and those that rank poorly.
However, on top of meaningful copywriting, you should also help your SEO standing by using some more technical tools, like XML Sitemaps for example. XML sitemaps make it easier for search engines to crawl all content elements included in your site and more likely for them to be indexed and shown in searches.
Starting with WordPress 5.5 you will be able to get an XML sitemap generated directly from your WordPress installation without relying on third-party plugins to achieve this.
This native option is great if you want a map that will list:
Pages
Posts
Categories
Tags
Users
If you want a more complex sitemap, that includes images, news, and videos, you’ll still need to rely on a third party plugin but I think this is definitely a great option for website owners that don’t want to add plugins.
If you want to dig deeper into more practical SEO tips, check out our series of articles from guest author and SEO expert Rebecca Gill.
Gutenberg UI and functionality
The block editor got a major UI overhaul, as well. Eleven versions of the Gutenberg plugin have been merged into WordPress 5.5, bringing with them new functionality, speed improvements, and a changed UI.
New Block Editor UI
You will immediately notice how the modal bar that appears when you click into a block is bigger, with more contrast and more compact. The options are still there, and more!
New Block Patterns
You will be able to add block patterns, which are combinations of blocks commonly used together. Text and media, two or three buttons in a row, headers with text, you name it. This is a great way to save time when you write your blog posts and an encouragement to be more creative with your content design.
Inline Image Editing
During WordCamp Europe 2020 Online, Matt Mullenweg, co-founder of WordPress.org and Matias Ventura, one of the leading engineers of the Gutenberg project, gave a demo of this new feature. You can now zoom, crop, and rotate images directly into the block image. You can see it for yourself in the video recording of the conversation and think about how this can also speed up and improve your editorial workflow.
And much more
With eleven versions of Gutenberg going into WordPress 5.5 as you can imagine there are a lot more exciting features included. To see them all in detail, you can check out the release posts in the Core blog.
Accessibility Changes
No WordPress major release would be complete without some Accessibility improvements and 5.5 is no different. In this release a number of changes were introduced, with these being the most notable:
The first iteration of alternative view modes for list tables
Link-list widgets can now be converted to HTML5 navigation blocks.
Primary buttons actually look disabled when they are disabled
Meta boxes can now be moved with the keyboard.
Pro Tips For Developers
There are a lot of changes under the hood as well, which will be especially interesting for our developer customers. Don’t forget to check the Field Guide with all the Dev Notes related to major changes. I would also recommend you sign up for the Core blog: it’s very active and it’s the best way to keep up to date with changes that might affect your code. The more time you have to test changes, the better… don’t wait for release day to discover that something broke.
Over to you
Have you tried some of the things mentioned above, maybe through the Beta Tester plugin or the Gutenberg plugin? Even if you haven’t tried anything yet, what are you excited and curious to try?
In my last SEO article, we explored my favorite tools sources for building up a robust keyword universe and got some excellent keyword research tips. In today’s article, I’ll walk through evaluating these keywords for usage within your website or blog, or, in other words, we’ll learn how to do keyword analysis.
We’ll also review how to easily locate Google search volumes, we’ll learn what search intent is and why it matters, and then I’ll provide some additional insights into narrowing this list for the best keyword opportunities to win in search and convert these searches into revenue.
Creating a Solid Keyword Strategy by Pulling Search Volumes for Your Keyword List
The last time we were together I gave readers all my favorite tools for finding keyword ideas and options, then I had tasked readers with the process of researching keyword phrases.
Now that you have your list of keyword ideas, it is time to pull data on the phrases so you can decide which keywords would be best to use on your website or blog.
We can’t target everything, so we need to pick and choose wisely. I like to use data for this phase of the planning process. Data helps guide me down the right path and it helps me stay away from futile pursuits of unrealistic keyword options.
For this task, I love using KW Finder for the purpose of keyword analysis. Actually, it’s the only SEO tool I’ll use for pulling data on keyword volumes, trends, and trends.
Using KW Finder for Keyword Analysis and Selection
Locate the Import option in the top navigation bar.
Once there you can drag your file over from your hard drive, copy and paste keywords straight into the tool, or use the Choose a file button to import a file.
In this example, I used copy and paste, when set my location to the United States.
Next, I simply click on the green Process Keywords button.
Once the import occurs, I’ll see a fresh screen that shows all my keywords with search data specific to the United States.
I can sort the columns by their headers to start viewing my keywords ranked by criteria like monthly search volumes, PPC ad costs, or keyword competition.
I can also click on any keyword row to see ranking data and trends on the right side of the page. This will help you see if a keyword is moving up or down with popularity and if you’d have easy or hard competitors. In the below example, SEO consulting has been trending down. My agency page (Web Savvy) is in position six on Google and it has some stiff competition from websites like Clutch.co and OutspokenMedia.com. Both have solid domain authority and backlinks.
I can view this data online and easily export my SEO keyword analysis to Excel. To do so, I simply click the check all box and then Export. I’ve highlighted both in red below.
The next step is to review the data offline. This export will look like the following once I eliminate the columns I do not want.
This data will help me evaluate keyword phrases to decide if they are something I would like to focus on as I move forward with keyword mapping and creating an editorial plan.
Understanding Search Intent is Key when it Comes to Keyword Analysis
Before we start finalizing keywords, we need to take a step back and think about search intent. This will keep us from going down a path of inaccurate phrases that don’t align with our target market and offering.
Search intent sounds scary, but you don’t have to let it be intimidated. The concept isn’t that hard to understand if you try and think like Google.
Search intent simply refers to a human’s intentions when performing a search. For example, when a user searches in Google for “hot dog” did he mean a dog that is hot from the sun or did he really want results that pertained to the food hot dog?
Understanding what the user expected to receive for a given search phrase is search intent. You might be surprised to know Google is pretty darn good at figuring this out these days.
The Different Types of Search Intent
There are four main types of search intent and they are:
Navigational – Navigational searches are performed with the intent of surfing directly to a specific website. These are direct searches for a brand, company, website, or a person.
Informational – This is the largest category and typically represents people looking for quick answers like recipes, sports scores, local weather, the cure to their current ailment or illness.
Commercial – Investigational searches (leading up to purchaseс) that help a buyer find information. These could be consumer or business-related.
Transactional – These searches are largely for purchases or completing a task such as signing up for a service.
In my above list of keywords, the phrase “what is digital marketing” is an informational search. The user is searching for information and not yet ready to purchase. In this search term results we’ll see a mix of Google’s Knowledge Graph data that includes a Knowledge Panel, People Also Ask, Videos, Top Stories, Business Industries, and Creative Hobbies.
The search term “SEO consultant” would be more commercial or transactional, because it indicates that the searchers are now looking for someone to help do digital marketing for them. Google knows this phrase is for a person to do SEO, so it places the local map results at the top of the search engine results screen.
Takeaway: A key takeaway here is the search intent matters to both national and local searches. Google My Business uses search intent to determine what phrases to associate to map-based results.
Does Search Intent Really Matter to Website Owners?
Many years ago, we used to be able to manipulate search results because search intent was not as important as it is in today’s search environment. By “manipulate” I mean I could reach for phrases that are outside my core focus area.
In today’s world of SEO, it is much more difficult to stretch for keywords and phrases that don’t directly relate to your content. The reason for this is Google is smart and Google understands what the user wants and will make sure the results match up closely to this want.
Don’t stray from search intent or you will find yourself frustrated and sitting on page 20 of the search engines results page!
[subscribe_cta]
Narrowing Your Keyword List Based on Relevance
You will not rank on every keyword phrase you want, so you have to pick your battles. I like to start with a large list as I brainstorm ideas, then I reduce those down to a manageable level.
As you go through your keyword list to make your selection, you always have to stay focused on your target market and what they need. This is why we started our articles series spending so much time on website personas and your target markets’ pain points!
Review each phrase in your list and think through what phrases would appeal most to your audience. And then think through how these phrases align to what you offer. If a phrase doesn’t match up to your target market and your offering you need to eliminate it.
A Few Tips to Keep You Sane and Successful
1. Know That with Keyword Zero Isn’t Really Zero
The search volumes you see will present blank values at times and this blank indicates a zero search volume. That said, zero isn’t really zero and I have actual Google data to support this theory.
As part of my seed list development process, I will pull phrases from Google Analytics and Google Search Console. These phrases were used by a real human to reach my website or that of my client. Thus, I know there is a search volume for these phrases.
When I plug these phrases into KW Finder, I receive zero search activity. How can that be since KW Finder pulls its data from Google’s API? After all, there is search volume and Google Search Console told me so.
It is a mystery and the only answer I can come up with is that Google doesn’t consider the phrase pay per click-worthy, so it fails to show volume.
This is frustrating to me and it will be frustrating to you. So just remember zero may mean zero or it could just be that Google won’t provide data.
2. Review PPC Bids
Let me state that I am not suggesting PPC and the payment for ads. I’m an SEO girl through and through. That won’t change anytime soon.
That said, I do like to look at PPD bid amounts because I think this data point can be an indication of high converting search terms. We want high converting search terms, so always review PPC amounts to see if you’d like to grab organic search for those terms.
3. Prioritize Your Keywords
Now that we have our list of keywords and search volumes, we can begin reviewing these in detail. I like to do this using a scoring methodology.
I give a simple rank of 1-High, 2-Medium, 3-Low, and 4-None to phrases as I review them. The numbers will allow us to quickly sort the spreadsheet by ranking.
As you rank your keyword phrases you are ranking them in order based on how closely they align to your target market, their pain points, and what you do to solve those pain points. I’m repeating myself here and this is because you need to stay mindful of this idea as it is the core of successful keyword research and selection.
In my above examples, I pulled searches for PPC and SEO terms. I only really do SEO and Google knows this, because it knows who I am and what I do. It would be a waste of my time to target PPC terms since I won’t sell anything PPC related. I’m better off staying close to what I do and targeting those phrases. Thus I would eliminate any PPC related phrases as they will be a waste of my time and effort.
Vet Your Keyword Phrases in Search
Before you fully sign off on your targeted keyword list, I want you to review them in Google’s search results. This is an easy task, but an important one!
Here are the steps:
Grab your list of targeted keywords.
Open up a fresh browser window with no history or signed in accounts to Google. I typically use Chrome for all my normal activity and use an alternate browser like Firefox for searches because I have it set to store zero history.
Take your first focused keyword phrase and search for it on Google. Then take a moment to review the results.
Ask yourself some questions:
Do the search results align to my target market?
Do the search results align to what I offer?
Do the search results include national, local, or a mix of results?
How good is the content presented? Is it old and dated or short and incomplete?
Can you create better content?
Finally, remove anything that scares you or just doesn’t seem like a fit.
Finalize Your Keyword List
Now that you’ve gone through keyword prioritization and vetting your terms in search, you should have a solid list of phrases to use in keyword mapping.
Before we move onto that, I want to answer one question I am always asked: How many keywords do I need to finalize?
There is no firm answer because it varies greatly by the type of website or blog, industry, geographic focus, etc.
Just select an amount that feels like it will help provide you with a solid plan for moving forward with SEO. If you have enough keywords to bring in the traffic you want, then you should be good to go. At least for now. I tend to do keyword research every six months and once you start, you’ll probably want to too.
Coming Up Next!
We’ve come a long way together in these first three articles and we’ll continue our SEO journey next with keyword mapping and content planning.
Once we wrap up our keyword mapping you’ll have a solid plan and strategy for SEO efforts!
Most developers are familiar with the website “Have I Been Pwned?“. Most non-developer and non-techie people have probably never heard of it. That’s ok, that’s what this blog post is for – to not only tell you about it, but to show you how to use it to keep your WordPress site safer.
First, the term “Pwned” originated in a game. It was a typo because the letters “P” and “O” are so close to the keyboard. Like many good mistakes in gaming, it was appropriated and now is common slang in technical and gaming circles for “Owned.” Depending on the context, it can mean that someone really beat you bad in a game, or that someone has compromised your server and now has access to it. Either way, you’ve been pwned. Pwned is never a good thing. 🙂
What’s “Have I Been Pwned?”
The website “Have I Been Pwned?” is more tech than a game. It was set up by Troy Hunt because, after every major data breach, he would do a post breech analysis of the data released over and over again, and see the same credentials and passwords being used. When a data breach occurs, the attackers will sell or release any user credentials they obtain.
Most users have the bad habit of reusing logins and passwords, so the credentials that work on one site may also work on another site. Thus if a user’s data is released from one site, it can be potentially disastrous for a user because the attackers can try their login and password on a multitude of other sites and gain access to more and more sites and data.
How to Use It?
So Troy gathered any data he could get from a data breach and put it all in one big database. Then he built a website where you can enter your email address and see if it was included in any of the breeches he has access to. Just for fun, go ahead, click the link and check your email address. You’ll probably be surprised, and not in a good way, pwned is never a good thing.
These days the website also provides an API that other websites can use. The main function of this website is to prevent a user from reusing a password that has already been compromised. WordPress has several plugins that hook into the registration process and check the password a user is trying to use against haveibeenpwned.com’s API. The API takes a prefix of a “hash” of the password. The password itself is never sent across the wire. It returns all the hashes that start with that prefix.
The plugin then looks for its exact hash. If it finds it, it will give the number of times that password has been released, regardless of the site that was breached or the user name. The plugin then makes a decision on whether or not to let the user use that password.
This, by itself, will not make your site safe. As I discuss in “Is My Website Safe”, there is only one way to secure a computer from the Internet – turn it off. However, adding this layer to your security stack is one more way to make it more secure. Add enough layers of security, and your site is not an easy target, so attackers move on to another one.
Starting today we are increasing the resources available to all our new and existing cloud plans with 1CPU Core and 2 GB RAM at no additional cost. The upgrade will make our cloud service faster and more reliable than ever. During the last few months, we have implemented multiple service improvements and the current cloud update is another enhancement made possible by our recent switch to Google Cloud Platform.
More Value With Our Managed Cloud Service on GCP
When we decided to move our infrastructure from bare metal servers to cloud infrastructure, we wanted to get the most out of that switch. We considered all the data redundancy factors, network capabilities, and of course the speed of the new platform compared to the old infrastructure. What was offered by Google Cloud on these parameters was really impressive. We knew that even the mere switch from the previous platform to the new one would result in performance improvements. But what motivated us, even more, to move to Google Cloud Platform were the opportunities we saw to optimize our resource usage, become more efficient and give more value to our clients. The current cloud upgrade is a direct result of the optimization opportunities we have on the new platform. Now our cloud services are not only hosted on a better infrastructure provided by Google Cloud but also receive more resources at the same price as before.
New Clouds – More Resources at the Old Price
All our cloud offers now come with 1CPU Core and 2 GB RAMmore without any change in their current price. Therefore, our entry cloud plan now includes 3CPU cores, 6 GB RAM, and 40 GB space at just 80 USD per month*, which sets the base for any configuration of CPU, RAM, and storage that you wish to create. Additional resource units can be added to this new base at the same prices as before.
Current Cloud Plans – a Free Upgrade
In the next few days, all our existing cloud users will also receive a free update of their cloud features and will have 1CPU Core and 2 GB RAM added to their existing plan.
No downtime is expected during this upgrade. However, the option to upgrade or downgrade cloud resources will be temporarily disabled in the Client Area during the upgrade process. Only the Autoscale option will be available to accommodate any urgent need for additional CPU or RAM that may arise during the short period of the feature update.
* Prices depends on geographical region of the client starting from: 80 USD/mo; 64 EUR/mo; 48 GBP/mo; 80 AUD/mo