INF 270: WordPress — Week 11: SEO and Plugins

Announcements

Due this week: Discussion board post/reply, Lab #6.

Next week: Final Project Check-In #2.

May 5: Final project is due, including your video reflection. More info here.

1. What is SEO?

Search Engine Optimization (SEO) is the practice of making your website easier for search engines to find, understand, and rank. When someone searches for something your site covers, good SEO increases the chance your page appears near the top of the results.

Why does it matter?

  • Traffic is not automatic. A beautifully built site that nobody can find has little value for a real client.
  • Organic search is free. Unlike paid ads, a well-ranked page keeps bringing in visitors without ongoing cost.
  • Trust and credibility. Users trust search engines. Appearing near the top signals that your site is relevant and reputable.
  • Clients expect it. When you build a WordPress site for someone, they will ask why their site "doesn't show up on Google." Understanding SEO lets you answer that question and set realistic expectations.

2. How Search Engines Work

Search engines operate in three main stages:

Crawling

Search engines send out automated programs called crawlers (or "spiders" or "bots") that follow links across the web. When a crawler visits your page, it reads the HTML and follows any links it finds to discover more pages. If your page has no links pointing to it from anywhere else on the web, crawlers may never find it at all.

Indexing

After crawling a page, the search engine stores information about it in a massive database called an index. This is where search engines keep track of what content exists on the web and what each page is about. Pages that are difficult to crawl (blocked by robots.txt, behind a login, or built entirely in JavaScript without server-side rendering) may not get indexed.

Ranking

When a user searches, the search engine looks through its index and ranks matching pages. Ranking is determined by hundreds of signals, including:

  • Relevance: Does the page content match what the user searched for?
  • Authority: Do other reputable sites link to this page? (Inbound links are called backlinks.)
  • User experience: Does the page load fast? Is it mobile-friendly? Do users stay on the page or immediately leave ("bounce")?
  • Content quality: Is the content original, accurate, and genuinely useful?
A realistic expectation: New sites typically take weeks or months before they show up prominently in search results. SEO is a long-term investment, not a quick fix.

3. SEO Best Practices in HTML

Before reaching for a plugin, the most foundational SEO improvements come from writing clean, meaningful HTML.

Title tags and meta descriptions

These two elements are what users actually see in search results. The <title> becomes the clickable headline; the meta description becomes the summary snippet below it.

  • Title: 50–60 characters, put the most important keyword near the front
  • Description: 150–160 characters, write it like ad copy — make users want to click
  • Every page should have a unique title and description
<head>
  <!-- The title tag: shown in browser tabs and search result headlines -->
  <title>Handmade Ceramics | Blue Ridge Pottery</title>

  <!-- The meta description: shown as the snippet under a search result link -->
  <meta name="description" content="Shop handmade stoneware mugs, bowls, and vases
    crafted in Asheville, NC. Free shipping on orders over $50." />
</head>

Semantic HTML

Search engines read your HTML to understand what a page is about. Using semantic elements like <header>, <main>, <article>, <nav>, and <footer> gives crawlers a clear map of your page's structure.

<!-- Bad: no semantic meaning -->
<div class="header">
  <div class="nav">...</div>
</div>
<div class="main-content">
  <div class="post">
    <div class="post-title">Why Ceramics?</div>
    <div class="post-body">...</div>
  </div>
</div>

<!-- Good: semantic meaning helps search engines understand your content -->
<header>
  <nav>...</nav>
</header>
<main>
  <article>
    <h1>Why Ceramics?</h1>
    <p>...</p>
  </article>
</main>

Heading hierarchy

Use headings to outline your content logically. Each page should have exactly one <h1> that describes the page's main topic. Subheadings should nest in order.

<!-- Bad: skipping heading levels, using headings for style -->
<h1>Blue Ridge Pottery</h1>
<h3>Our Story</h3>
<h5>Meet the Artist</h5>

<!-- Good: logical hierarchy, one h1 per page -->
<h1>Blue Ridge Pottery</h1>
  <h2>Our Story</h2>
    <h3>Meet the Artist</h3>
  <h2>Shop</h2>
    <h3>Mugs</h3>
    <h3>Bowls</h3>

Image alt text

Search engines cannot see images — they read the alt attribute. Good alt text also makes your site accessible to users who rely on screen readers.

<!-- Bad: no alt text, unhelpful file name -->
<img src="IMG_4823.jpg" />

<!-- Bad: keyword stuffing -->
<img src="mug.jpg" alt="mug ceramic mug handmade mug buy mug pottery mug" />

<!-- Good: describes the image naturally -->
<img src="speckled-blue-mug.jpg" alt="Speckled blue stoneware mug on a wooden table" />

<!-- Decorative images that add no content should use empty alt -->
<img src="divider-line.png" alt="" />

Canonical URLs and language

The canonical tag prevents duplicate content problems that arise when the same page can be reached from multiple URLs (e.g. with and without www, or with different query strings).

<head>
  <!-- Canonical: tells search engines which URL is the "real" one
       when the same content is accessible from multiple URLs -->
  <link rel="canonical" href="https://blueridgepottery.com/shop/mugs" />

  <!-- lang attribute on <html>: helps search engines serve results
       to users in the right language/region -->
</head>

<!-- Set this on the opening html tag -->
<html lang="en">

Open Graph tags

Open Graph tags are not a direct ranking factor, but they control how your pages appear when shared on social media. A compelling preview card can dramatically increase click-through rates.

<head>
  <!-- Open Graph tags control how your page looks when shared on
       social media (Facebook, LinkedIn, iMessage link previews, etc.) -->
  <meta property="og:title" content="Handmade Ceramics | Blue Ridge Pottery" />
  <meta property="og:description" content="Shop handmade stoneware crafted in Asheville, NC." />
  <meta property="og:image" content="https://blueridgepottery.com/images/og-preview.jpg" />
  <meta property="og:url" content="https://blueridgepottery.com/shop/mugs" />
  <meta property="og:type" content="website" />
</head>

Structured data (Schema.org)

Structured data is a standardized way of embedding machine-readable information in your HTML. Search engines use it to generate rich results — things like star ratings, event dates, FAQ dropdowns, and business info panels that appear directly in search results. It is added as a JSON block inside a special <script> tag.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Blue Ridge Pottery",
  "url": "https://blueridgepottery.com",
  "telephone": "+1-828-555-0192",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Tunnel Rd",
    "addressLocality": "Asheville",
    "addressRegion": "NC",
    "postalCode": "28805"
  }
}
</script>

You can validate your structured data with Google's tool: search.google.com/test/rich-results

Other technical signals

  • Page speed: Google uses Core Web Vitals as a ranking signal. Compress images, minimize CSS/JS, and use a caching plugin.
  • Mobile-friendliness: Google indexes the mobile version of your site first ("mobile-first indexing"). Always test on small screens.
  • HTTPS: Sites without SSL certificates are penalized in rankings and flagged by browsers as insecure.
  • robots.txt and sitemaps: A sitemap (usually at /sitemap.xml) tells crawlers what pages exist. A robots.txt file tells them what pages to skip.

4. Yoast SEO for WordPress

Manually managing meta tags, sitemaps, and canonical URLs across a whole WordPress site would be tedious and error-prone. The Yoast SEO plugin automates most of this and provides a guided workflow for writing SEO-friendly content.

Yoast is one of the most-installed WordPress plugins in existence, which means it is well-documented, actively maintained, and widely understood by clients and other developers.

What Yoast does automatically

  • Generates and submits an XML sitemap to search engines
  • Adds canonical tags and controls noindex on archive and taxonomy pages that might otherwise cause duplicate content issues
  • Adds Open Graph and Twitter Card meta tags to every page and post
  • Lets you set title and description templates for post types (e.g., automatically appending your site name to every title)
  • Adds breadcrumb schema markup

The Yoast meta box

When editing any post or page, Yoast adds a panel below the editor called the SEO meta box. This is where content editors spend most of their time with Yoast. It has three tabs:

  • SEO tab: Set a focus keyphrase (the search term you want the page to rank for), preview how your page will look in Google results, and edit the SEO title and meta description.
  • Readability tab: Analyzes your writing for things like sentence length, passive voice, and use of transition words. These are not direct ranking signals but correlate with content quality.
  • Social tab: Override the Open Graph title and image for Facebook and Twitter specifically.

The traffic light system

Yoast uses colored dots (red, orange, green) to score your SEO and readability. These are helpful guides for content editors, but treat them as suggestions — not strict requirements. Getting a green dot does not guarantee ranking, and a red dot does not mean the page is broken.

Avoid keyword stuffing. Yoast's keyphrase density checker encourages you to use your focus keyphrase throughout the content. This is good advice in moderation, but forcing a keyword into text unnaturally will hurt readability and can actually be penalized by search engines.

Yoast settings to know

  • Search Appearance: Configure your site's global title format and control which post types and taxonomies are indexed.
  • Integrations: Connect to Google Search Console to see how your site is performing in actual search results.
  • Tools > Import/Export: Useful when migrating a site — you can export all Yoast SEO data and import it into a new installation.

Yoast documentation: yoast.com/wordpress/plugins/seo/

5. Finding and Evaluating WordPress Plugins

One of WordPress's biggest strengths is its plugin ecosystem — there are over 60,000 plugins in the official directory. That scale is also a risk. A poorly maintained or malicious plugin can break your site, introduce security vulnerabilities, or cause major performance problems.

Start at the official directory

Always start your search at wordpress.org/plugins/. Plugins listed there have been reviewed by the WordPress team and must follow basic coding standards. Installing from random third-party sites is how most WordPress malware spreads.

Signals of a trustworthy plugin

  • Active installs: A plugin with 100,000+ active installs is widely used and closely watched by the community.
  • Last updated: The plugin should have been updated within the last 6–12 months. An unmaintained plugin is a security liability.
  • Compatible with your WordPress version: The plugin page lists the last WordPress version it was tested with. Avoid plugins that lag far behind the current release.
  • Ratings and reviews: Read the 1-star reviews as carefully as the 5-star ones. They often reveal real problems with support, conflicts, or data loss.
  • Responsive support forum: Check the "Support" tab on the plugin page. Does the developer respond to issues? Are problems resolved?
  • Established developer: Plugins from companies like Automattic, WooCommerce, Jetpack, or well-known agencies are generally well-maintained.

Red flags to watch for

  • Not updated in over a year
  • Fewer than a few hundred active installs for a non-niche use case
  • No support responses from the developer
  • Plugin downloaded from a site that is not wordpress.org
  • Promises that seem too good ("1-click SEO fix!", "instant Google #1 ranking")
  • Requires you to create an account or send data to a third-party server for basic functionality

Less is more

Every plugin you install adds code that runs on every page load. More plugins means more potential for conflicts, slower load times, and a larger attack surface. Before installing a plugin, ask:

  • Does WordPress already do this natively?
  • Can I solve this with a small amount of custom code instead?
  • Do I actually need this feature, or is it just nice-to-have?

Some widely-used, reputable plugins by category

  • SEO: Yoast SEO, Rank Math
  • Performance / caching: WP Super Cache, W3 Total Cache, LiteSpeed Cache
  • Security: Wordfence, Solid Security (formerly iThemes Security)
  • Forms: WPForms, Gravity Forms, Contact Form 7
  • eCommerce: WooCommerce
  • Backups: UpdraftPlus, Duplicator
  • Image Lightbox/Carousels: Lots of options - find one that provides a focus service rather than a bloated "kitchen sink" plugin that tries to do everything.