24 WordPress SEO Tips To Optimize Your Site In 2020

If you’re looking for less obvious WordPress SEO tips, I have just the list for you.

You’ve probably heard enough about Yoast green lights for one lifetime. That’s why this list includes practical tips that go way beyond Yoast, including a full list of SEO and speed optimization plugins. I used these to grow my SEO blog to 3,000 readers/day as a 1-man show.

Just read it, you will definitely learn something.

 

1. Install The Right SEO Plugins

  • Yoast SEO – you probably already use Yoast, but most people don’t do these things correctly: forgetting keyword density, snippet variables, bulk editor, and social optimization. Or see my Yoast tutorial which covers all 4 steps to Yoast: settings configuration, Webmaster Tools, focus keywords, content SEO.
  • Google Site Kit – Google’s new WordPress plugin which integrates Google Analytics, Search Console, AdSense, and PageSpeed Insights. It’s still in beta.
  • WP Review – rich snippet plugin (best one out there IMO) and is what I use. Here’s a page I use it on. It looks great, supports 14 data types (including editor reviews, user reviews, and recipes), comes with 16 pre-styled templates, and is supported by MyThemeShop. All In One Schema is free but very minimal and lacks customization. WP Rich Snippets was abandoned by the developer. WP Review is lightweight and has both a free and pro version with tons of options.
  • Easy Table Of Contents – adding a TOC has huge SEO benefits. It encourages long content, lets people link to specific sections of your post, makes them click around, and Google may award you jump-to links by using name anchors.
  • Automatic Alt Attributes – automatically adds alt text to images, preventing you from having to add it manually (ever since WordPress stopped doing it).
  • Broken Link Checker – still the easiest way to find/fix broken links, but ongoing scans consume high CPUs (be sure to deactivate it when you’re done).
  • Quick Page/Post Redirect – free redirect plugin you can use to fix crawl errors (broken pages) found in Google Search Console (Yoast also has a setting for it).
  • Republish Old Posts – resets publish dates to current day, making all your posts look fresh in search results. It’s a little cheap (considering you didn’t actually update your posts with new content) but it can increase your CTRs.
  • Yoast Premium Plugins – I don’t use these since they don’t directly help SEO, but many people consider them. I wrote a review on Yoast premium explaining how redirects can be done with free plugins, multiple focus keywords aren’t as useful as you might think, and other reason I don’t think it’s worth $89/year.
  • WP Rocket – #1 rated cache plugin in multiple Facebook polls. Easy to setup, yields great results, and is updated frequently. Comes with many features most cache plugins don’t (database cleanup, lazy load, local Google Analytics hosting, heartbeat control, and integrate with Cloudflare and other CDNs).
  • Analytify – shows Google Analytics metrics directly in WordPress dashboard.
  • Really Simple SSL – automatically configures site for SSL. You still need to sign up for an SSL (I use the free Let’s Encrypt SSL which comes with SiteGround).

 

2. Leverage New Keyword Research Tools

Answer The Public – pulls keywords from Google Autocomplete and creates a visual keyword map. Breaks keywords down into questions, prepositions, and comparison keywords. The greener the circle, the more searches the keyword has. Not only a great way to find keywords, but to make sure your content is comprehensive and answers all questions people are asking.

Yoast Keywords – AnswerThePublic

Moz Keyword Explorer – similar to Google Keyword Planner only much better, since it’s designed specifically for SEO while Keyword Planner is designed for AdWords. Shows competition in organic results (KP is for AdWords), monthly search volume, and has filters for grouping similar keywords so you’re not scrolling through the same ones (very handy feature).

Moz Keyword Suggestions

Google Autocomplete Tricks – did you know you can use the underline character to have Google fill in the blank? Just make sure you end on the underline character _ and you can find an entire list of keywords you otherwise didn’t know about. I personally use this trick a lot.

Google-Autocomplete-Fill-In-The-Blank-1

MozBar – Chrome extension that lets you Google any keyword and see each result’s DA (domain authority) and PA (page authority). The higher they are, the more competitive the keyword is. Check your DA in Moz Link Explorer and compete with sites that have similar DA.

MozBar Keyword Competition

Researching a keyword’s competition is a must. You don’t want to create content you’ll never rank for. The best indicator is if you Google the keyword, short (weak) content is in the top results. If you can create better, more thorough content, then it’s probably a good keyword.

Keyword Competition

 

3. Forget About Keyword Density

Yoast’s SEO analysis awards you green lights when you complete recommendations. The problem is, most have to do with keyword usage, and there’s more to on-page SEO than this.

What Yoast should say:

WARNING: injecting keywords in your content/snippets makes them look spammy. Have you thought about writing an SEO title + meta description to increase CTR? Every result in Google will be using the keyword – why would anyone click your link? Yes, you should use your keyword in the page title, URL, SEO title, and meta description (the most important places)… but don’t inject keywords just to get green lights. Forget about keyword density and keywords in subheadings… add a table of contents to organize longer posts, use videos, infographics, rich snippets, social sharing images, and beef up thin content to make it better (more detailed) than the top search results.

Here’s an overview of Yoast:

Yoast SEO Analysis

 

4. Avoid Yoast Snippet Variables

In Yoast’s settings, they give you the option to use snippet variables which act as templates for SEO titles + meta descriptions. Writing custom ones is ALWAYS better and you should never rely on templates as they’re not optimized for keywords, character length (green bar), or CTR.

Yoast-Snippet-Variables

 

5. Increase CTRs With Yoast’s Bulk Editor

Yoast’s bulk editor lets you review all your SEO titles + meta descriptions without having to manually go through each page/post. You should make sure they’re optimized for keywords, character length, and CTR. The bulk editor doesn’t have the green bar (detects character length) and it doesn’t focus keywords either, so you’ll need to keep those in mind. But you can quickly see at a glance whether they read well and entice people to click on your link, or not.

Yoast-Bulk-Editor

 

6. Optimize Content For Social Sharing

Want your content to format nicely for Facebook/Twitter?

facebook-share

Step 1: Enable Open Graph meta data under Yoast’s Facebook and Twitter tab:

Yoast-Social-Meta-Data

Step 2: Edit a page/post, then click the “share” link in Yoast. Upload custom images for Facebook (1200 x 630px) and Twitter (1024 x 512px). You can also customize the title + description for each social network, which by default is set as the SEO title + meta description. This comes in handy when running boosted posts for Facebook Ads and want different text.

yoast-social-media-optimization

 

7. Aim For 3,000 Words

It makes sense.

Longer content does a better job at covering a topic than short content. People also spend more time on your page, finding it more useful, and are more likely to link and share the post.

average-content-length

Some of my posts are 4,000+ words…

WordPress Word Count

 

8. Add A Table Of Contents

Creating 3,000 word count articles may sound daunting, but it’s easier when you start with a table of contents. This has huge SEO benefits like Google awarding jump-to links using named anchors, and allows people to link to specific sections. It also increases time spent on the page.

How To Create An HTML Table Of Contents
Table of contents HTML looks like this…
<ul>
<li><a href="/your-permalink/#item-one">Item One</a></li>
<li><a href="/your-permalink/#item-two">Item Two</a></li>
<li><a href="/your-permalink/#item-three">Item Three</a></li>
</ul>

Each subheading’s HTML looks like this…
<h3 id="item-one">Item One</h3>
<h3 id="item-two">Item Two</h3>
<h3 id="item-three">Item Three</h3>

Or you can try the Easy Table Of Contents plugin.

 

9. Create Comprehensive Content

Nothing satisfies Google more than comprehensive content. You can “optimize” all you want but if your content doesn’t cover the topics extensively, someone else’s content probably will.

Answer The Public tells you all “question keywords” people are searching about a topic. It’s a great way to make sure you’re answering the most popular questions people want to know.

Yoast Keywords – AnswerThePublic

 

10. Add Rich Snippets

The WP Review plugin by MyThemeShop is the plugin I use for rich snippets and has a free and pro version (both are great). I would avoid All In One Schema (free but lacks customization) as well as WP Rich Snippets (the developer abandoned it and isn’t compatible with PHP 7). I was previously using WP Rich Snippets, but he literally didn’t update the plugin for 2 full years.

Why I Use WP Review As My Rich Snippets Plugin

  • Supports 14 data types
  • It’s lightweight (loads fast)
  • Comes with 16 pre-styled templates
  • It’s updated frequently by MyThemeShop
  • It’s highly customizable (here’s a page I use it on)
  • Multiple rating systems with optional user reviews

Structured Data Review Stars

 

11. Add Publish Dates To Posts

If you have time sensitive posts, adding a publish date makes your content look fresh:

Publish Date

Step 1: Enable ‘date in snippet preview’ in Yoast (SEO > Search Appearance > Content Types).

Date-In-Snippet-Preview-Yoast

Step 2: Add post modified date to the top of posts. Here’s the code:

<p>Last modified: <?php the_modified_date(); ?></p>

Of if using the Genesis Framework, use Genesis Simple Edits:

Entry-Meta

It should look something like this:

Entry Post Modified Date

Step 3 (Optional): Install the Republish Old Posts plugin. This resets all post’s publish date to current day, updating the date in search results and making all content look new. Of course, it’s a little cheap since you really didn’t update the content, but it can significantly increase CTRs.

Republish Old Posts

 

Google ultimately chooses who (and if) someone gets a featured snippet, but there are definitely ways to optimize for them. This puts you in the “#0” position and gives you 2 results.

3 Types Of Featured Snippets:

  • Answers
  • Lists
  • Tables

Featured Snippets

How To Get Featured Snippets In Google

  • Target a keyword where people want a concise answer
  • Use Moz Keyword Explorer to identify question keywords
  • Use Answer The Public to find even more question keywords
  • Choose whether the answer should be a paragraph, list, or table
  • Design a nice graphic (or take a photo) describing the keyword
  • Use optimal character length (see photo below taken from Moz)
  • Create fact-based content with quality references (links, graphics, etc)
  • Target keywords that already have an featured snippet but do a poor job
  • If you’re aiming for the answer box, target your keyword using an exact match
  • Make sure you’re on the 1st page for the keyword, if not, improve the content

Optimial Featured Snippets Length

 

13. Install WordPress Speed Plugins

I have done extensive testing on these plugins and use most of them on my own website.

  1. WP Rocket –  #1 cache plugin in most Facebook polls. You do not need plugins 3-7 from this list if you’re using WP Rocket, as it has these features built-in.
  2. WP Fastest Cache – #1 free cache plugin in most polls. Also easy to configure, has options for Cloudflare + other CDNs, but lacks features from WP Rocket.
  3. WP-Optimize – cleans your database of spam, trash, and other junk files.
  4. Lazy Load – delays loading photos until users scroll down and see them (improves load times but constantly loading photos as you scroll is annoying).
  5. Lazy Load For Videos – delays loading videos/iframes until users scroll down and see them. Videos take forever to load – this can shave many seconds off.
  6. CDN Enabler – easily setup your content delivery network (I use StackPath).
  7. CAOS (Host Google Analytics Locally) – fixes the “leverage browser caching” item in GTmetrix by hosting your Google Analytics tracking code locally.
  8. CAOS (Host Web Fonts Locally) – fixes Google Font errors in GTmetrix + Pingdom by downloading your Google Fonts and creating a stylesheet for it.
  9. Imagify / ShortPixel / Smushimage optimization (lossless compression, resize images, remove EXIF data). All these are similar – you only need one.
  10. Specify Image Dimensions – adds a width/height to your image’s HTML, an item in GTmetrix. It only works for images in the visual editor, it does not work for images in page builders, widgets, or any areas outside the visual editor.
  11. AMP For WPadds AMP pages to make mobile pages load faster and gives your site an “AMP Stamp” in mobile search results, which may increase CTRs.
  12. Perfmatters / Clearfy – disables unnecessary functions in WordPress core (trackbacks, pingbacks, heartbeat API, REST API, and other things 99% of you don’t need). Both plugins are similar and have other speed features as well.
  13. Harry’s Gravatar Cachecaches Gravatars, making comments load faster.
  14. GTmetrix for WordPress – keep track of load times and set email alerts.
  15. Display PHP Versionshows which PHP version you’re running (should be at least 7) which has a huge speed impact. You can upgrade in your host’s cPanel.
  16. Query Monitor – see slowest plugins, queries, etc (good replacement for P3).
  17. Plugin Organizer – if you install a contact form plugin, you probably don’t want it loading on every single page (just your contact page). Plugin Organizer lets you control which plugins load on specific pages, posts, and other content.
  18. Autoptimize – if you’re using GoDaddy, WP Engine, or other hosts who blacklist caching plugins, this plugin still gives you the benefits of optimizing HTML/CSS/JavaScript (items in GTmetrix + Pingdom) but without the caching.
  19. WP Hosting Performance Check – tells you if your server is slow and whether your speed technology (PHP, MySQL, WordPress versions) need updating.
  20. Better Search Replace – if you changed www or https versions of your domain, this plugin helps you bulk update all links on your website to reflect the new version. Otherwise you will see ‘minimize redirect’ errors in GTmetrix.

 

14. Avoid High CPU Plugins

Here’s a list of WordPress plugins that will slow down your site. I borrowed this list from a post on the WordPress Speed Up Facebook Group (an amazing group) but also added a few myself.

*Common culprits include related post, statistic, sitemap, chat, calendar, page builders, and plugins that run ongoing scans/processes or show high CPU in GTmetrix.

  1. AddThis
  2. AdSense Click Fraud Monitoring
  3. All-In-One Event Calendar
  4. Backup Buddy
  5. Beaver Builder
  6. Better WordPress Google XML Sitemaps
  7. Broken Link Checker
  8. Constant Contact for WordPress
  9. Contact Form 7
  10. Contextual Related Posts
  11. Digi Auto Links
  12. Disqus Comment System
  13. Divi Builder
  14. Elementor
  15. View Full List Of 65 Slow Plugins

Query Monitor will also find your slowest plugins…

Query Monitor Slow Plugins

GTmetrix’s Waterfall tab is another method…

Slow WordPress Plugin

 

15. Make Images Load Faster

Did you know images can be optimized 20 different ways? I had no idea there were so many ways before writing that article, especially when you take into consideration caching, lazy load,Cloudflare options, removing EXIF data, CSS sprites, and even optimizing them for SEO.

Image Optimization TOC

Here’s a list of image optimization items in GTmetrix (I’ll cover the main ones):

Image Optimizations In GTmetrix

Losslessly compress images – use a plugin like ImagifyShortPixel, Smush, or Kraken (all do the same thing) which also removes EXIF data (ISO, date, time, whether a flash was used, and other unnecessary info about the photo) which when stripped, will make it load a little faster.

Imagify Optimize Images On Upload

Serve scaled images – find oversized images and resize them to the correct dimensions). You can use GTmetrix to find these, and they will also provide you with the correct width/height.

serve-scaled-images

Specify image dimensions – means you need to specify a width/height in the image’s HTML or CSS. Grab these dimensions from GTmetrix, locate the image, and add the width/height.

Specifying Image Dimensions

 

16. Leave EIG Hosting

The same horrible company owns Bluehost, HostGator, and over 60 different hosting companies. They’re known for buying out existing companies and cutting costs by packing more people on the same server, as well as “streaming” support (longer wait times). GoDaddy isn’t good either – there are better options like Cloudways DigitalOcean or Vultr High Frequency.

List-Of-EIG-Brands

How To Check If Your Hosting Is Slow
Run your site through bytecheck.com and check your TTFB (time to first byte). It should ideally be <320ms. This and reduce server response time in PageSpeed Insights are good indicators.

Reduce-Server-Response-Time-Under-200ms

Hosting recommendations are usually garbage.

Join the WordPress Hosting Facebook Group to get unbiased feedback. Most members (myself too) swear by Cloudways WordPress Hosting. Specifically DigitalOcean / Vultr High Frequency.

Yes, it’s a little more expensive at $10-$13/month, but we’re talking about speed here – not being cheap. With Cloudways, you have a choice of using DigitalOcean, Vultr High Frequency, Google Cloud, AWS, or Linode. These are worlds faster than shared hosting and can handle resource-intensive tasks much better (Elementor, Beaver, Divi, WooCommerce, AdSense, etc).

Cloudways makes it easy to test them out and see the difference in your load times: they do free migrations, monthly pricing, a Migrator plugin, and a promo code to save money: OMM25

Here’s what happened when I moved:

SiteGround vs Cloudways

GTmetrix tests are always different, but even posts with a huge page 2.70MB page size and 96 requests can often load in under 2s. I’ll also take a 148ms time to first byte any day of the week.

OMM-TTFB

The evidence is there:

Cloudways Response TimesCloudways-Migration-Result
Cloudways Google PageSpeed
WP Engine To Cloudways
DigitalOcean Pingdom Report
Hosting-Recommendation
Moving-From-WPX
SiteGround-Alternatives
Preferred-Web-Hosting
UntitledWPEngine-To-Cloudways
Godaddy DigitalOcean Migration
Cloudways Pingdom Load Times
Cloudways Pingdom Report
Elementor-Hosting
Web-Hosting-France
SiteGround-Alternative
VPS-Cloud-Hosting

 
This was a simple Pingdom test to measure load times of 16 WordPress hosts. I signed up for popular hosting companies then installed the same Astra Starter Site on each of them while measuring load times in Pingdom for 1 week at 30 minute check intervals. Some domains are still live (cwdoserver.com is hosted on a $10/month Cloudways DO plan and stgrndserver.com is hosted on SiteGround GrowBig). I cancelled most of them because it was getting expensive. Even when browsing through their pages or running your own tests, you can see the difference.

WordPress-Hosting-2020-Pingdom-Test

Hosting Companies You Should Avoid

  • SiteGround – they have gone completely downhill in recent years.
  • Bluehost – slow servers, owned by EIG, bad support, rated poorly in FB Groups.
  • HostGator – also owned by EIG with slow servers, bad support, CPU limit issues.
  • GoDaddy – top malware hosting network worldwide, rated poorly in FB groups.
  • Hostinger – they write fake reviews and vote for themselves in Facebook polls.
  • WP Engine – also not what it used to be, expensive and not even fast anymore.
  • *A2 Hosting – if you can’t afford Cloudways, A2 is still fast and uses LiteSpeed.

I use Cloudways because:

  • Even posts with a 2.70MB page size can load in under 2s
  • DigitalOcean and Vultr HF are miles faster than shared hosting.
  • It’s $10-$13/month (no yearly contracts or high renewal prices).
  • Varnish, Redis, and memcached are all built-in for higher performance.
  • You get to pick from DigitalOcean, Vultr HF, Linode, AWS, Google Cloud.
  • 4.8/5 star TrustPilot rating and highly recommended in Facebook Groups.
  • They have 25+ data centers between all their cloud hosting providers.
  • No CPU issues like on SiteGround, Bluehost, and other shared hosting.
  • SSL, staging, and backups are all very easy in the Cloudways dashboard.
  • Support used to be average, but is now really good as reflected on TrustPilot.
  • They offer a free migration but their Migrator plugin will also do the trick.
  • Adding a server, migrating your site, and the dashboard is actually very easy.
  • Mustasaam (their community manager) gave me peace of mind when moving.
  • Only complaint is they need to add LiteSpeed servers to their list of providers.

Affiliate Disclaimer – if you sign up for Cloudways using my affiliate link, I would seriously appreciate it. I don’t recommend bad hosting like many other affiliates. I also donate quite a bit to charity ($6,000 to GoFundMe so far) and your support would really help. I try to base my reviews not only from my experience, but real evidence from the overwhelming feedback in numerous Facebook Groups. It would mean a lot.

Just do your research and look at this Facebook thread.

 

17. Upgrade Your Cache Plugin

WP Rocket was the #1 rated cache plugin in multiple Facebook polls:

2016 best cache plugin poll

2019 cache plugin poll

Swift vs WP Rocket

2016 cache plugin poll

Best cache plugins 2018 poll

wp rocket vs w3 totla cache

What’s So Good About WP Rocket?

  • It yields great results (it’s what I use)
  • Awesome support + extensive documentation
  • It’s one of the easier cache plugins to configure (see my tutorial)
  • It has high compatibility with themes/plugins and shouldn’t break your site
  • It’s always updated with new features (many cache plugin aren’t updated frequently)
  • It has features most cache plugins don’t (database cleanup, lazy loading, hosting Google Analytics locally, heartbeat control, integration with both Cloudflare + other CDNs)

 

18. Use Multiple CDNs

We know using a CDN makes your site faster.

But what about using multiple CDNs? The answer is yes, it helps even more. That’s because each CDN has their own set of data centers, and more data centers = faster content delivery.

Cloudflare data centers

Cloudflare Data Centers

StackPath data centers

StackPath-Data-Centers

How To Do It

  • Sign up for Cloudflare (free) and a paid CDN of your choice (I use StackPath).
  • Most cache plugins have an option to integrate both Cloudflare and StackPath

With Cloudflare you will change name servers

Cloudflare Name Servers Dashboard

With StackPath you will create a CDN site, then enter your CDN URL into your cache plugin..

StackPath CDN URL

WP-Rocket-CDN-Settings

 

19. Add AMP Pages

Accelerated mobile pages are a Google project that make mobile pages load faster and give you a AMP stamp in mobile search results, which looks nice and can potentially increase CTRs.

Accelerated Mobile Pages

Instructions For Adding AMP

Accelerated Mobile Pages Plugin Settings

Cloudflare Accelerated Mobile Links

 

20. Write A Killer About Me Page

Think about it.

Your about page is one of the most viewed pages on your website.

So why don’t you spend more time on it? In my about page, I created a list of 50 random and disturbing things about me. I also have a picture of me and my cats, my family, and other personal photos – including my story on how I created a 6 figure/year blog.

About-Me-Page

Main Benefits:

  • More time spent on my website
  • Trust (more likely to buy something using my affiliate link)
  • More emails of people sharing their own story (which I love)

 

21. Add SSL

Google cracked down even harder on non-HTTPs websites in July, 2018 when they started showing “not secure” in Google Chrome. Besides, if you’re a legit business, you need SSL.

I was scared to migrate to SSL even though I work with an amazing developer who I’ve been with for since 2011. Lucky for me, he did everything correctly and my traffic did not decrease at all. In fact, my affiliate sales went up (since I think people saw me as a more legitimate blog).

HTTPS-vs-Position

How To Add SSL To WordPress

Really Simple SSL

 

22. Affiliate Sites Need To Add Value

Yep, that’s my site.

I got penalized for too many affiliate links (plus I hired a link builder who created sketchy links). This was a hard time for me and my traffic/finances plummeted as I was forced to move back into my parent’s house become I had no money. Affiliate websites need to be super careful.

Affiliate-Link-Google-Penalty

Lessons I Learned:

  • Add value to your content beyond recommending products
  • Don’t just recommend affiliate products – recommend free stuff too
  • Do not stuff your content with affiliate links, 5 is usually plenty (for me)
  • Consider creating reviews on affiliate products, and link to those instead
  • Use an affiliate link management plugin to track statistics on affiliate links
  • Track which affiliate links people click those most, then leverage those
  • Create in-depth cornerstone content (core tutorials every visitor wants to read)
  • Don’t just create “list posts” and list your affiliate products first (Google knows)

Want to learn how I made $150,000 in 2018? Read my affiliate marketing tutorial.

 

23. Use SEO-Friendly Themes

StudioPress themes (and their Genesis Framework) are recommended by Yoast, Matt Cutts (from Google), and even Matt Mullenweg himself. I’ve been using their Outreach Pro theme since 2016 and love it. My site has 100% GTmetrix scores (loads fast), has virtually no compatibility errors with plugins, and is highly customizable with StudioPress’ Genesis plugins.

StudioPress Themes

What Makes StudioPress Themes So Good?

  • Reliability – trusted by 200,000 people including top WordPress users like Yoast. Clean code, documentation for each theme, and frequent updates to both their themes and Genesis Framework. Bottom line – I don’t have to worry about compatibility issues when upgrading plugins, PHP, theme-related CPU consumption, etc. It runs smoothly.
  • Mobile-friendly – all StudioPress themes are HTML5 + mobile responsive.
  • Large CommunityGenesis WordPress (Facebook Group) has 10,000 members.
  • Plugins – all StudioPress plugins are lightweight and add virtually nothing to load time.
  • Highly Customizable – StudioPress’ Outreach Pro theme looks like it’s designed for churches, but look at my homepage. It looks nothing like the pre-designed homepage.

 

24. Local SEO (Google’s Local Ranking Factors)

If you’re doing local SEO, there are many things outside of optimizing your WordPress you should be doing. Here are Google’s 2018 local search ranking factors which are reported by Moz every 2 years. Google My Business has become more important with it being 25.12%.

2018 Local Search Ranking Factors

Optimizing Your Google My Business Page

*Google is increasingly taking into consideration activate business owners who: post on Google Posts, respond to reviews, keep special hours updated, answer questions, make it convenient for customers to take direct actions on GMB using business URLs.

Google My Business Logo

 

Heyyyy. You Made It To The End.

Check out some other tutorials of mine which are just as good!

Cheers,
Tom

Subscribe
Notify of
guest
13 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments