Structure

Hardcode your footer links in the template

Your CMS lets you manage footer links through the admin panel. Menus, widgets, custom fields—pick your flavor of unnecessary complexity. You're solving a problem you don't have.

Footer links change when you restructure your site or add a compliance page. That happens maybe once a year. The rest of the time, those links just sit there, exactly where you put them. You don't need an interface for that.

The maintenance tax you're paying

Every editable footer adds friction. Someone has to learn your menu system. Someone has to remember which widget area controls which column. Someone has to figure out why the Privacy Policy link disappeared after a theme update.

You're not saving time. You're creating surface area for mistakes.

Hardcoded footer links break exactly once: when you change them. Admin-managed footer links break whenever someone clicks the wrong button, rearranges a menu without checking the output, or updates a plugin that resets your widget configuration.

What belongs in the template

Anything that defines your site's structure belongs in the template. Your footer is structure. Copyright text, legal links, social profiles—these aren't content that changes with each post. They're the frame around your content.

Hardcode:

  • Copyright and site name
  • Core navigation (About, Contact, Privacy)
  • Social media links
  • Newsletter signup link
  • Legal and compliance pages

Leave these in your admin panel:

  • Nothing footer-related, probably

How to actually do this

Open your footer template file. Write the HTML. Link to /about, /contact, /privacy. Done.

If you're on WordPress, it's footer.php. Hugo, layouts/partials/footer.html. Eleventy, whatever you named your footer include. The file you edit once and forget about.

Your links won't disappear during a theme update because they're part of the theme. They won't get accidentally reordered because there's no drag-and-drop interface to misuse. They won't break when someone forgets how your menu system works.

When you actually need dynamic footers

You don't.

Okay, fine: if you run a multi-site network where different properties need different footers, make them dynamic. If your footer links need to change based on user permissions or geography, make them dynamic.

For everyone else—small sites, single-site businesses, personal projects—you're maintaining infrastructure for flexibility you'll never use. Your footer isn't content. Stop treating it like it is.

When you do need to change a footer link, edit the template. Commit the change. Deploy it. This is less work than logging into your CMS, finding the right menu, remembering which position corresponds to which footer column, making the edit, and hoping you didn't break something adjacent.

Stop managing structure like content

Your CMS fields should reflect what actually varies. Post titles vary. Publication dates vary. Body copy varies. Your footer doesn't.

The same logic applies to your header navigation, your 404 page, your newsletter signup form. If it changes less than quarterly, it doesn't need an admin interface. Template it and move on.

You'll spend less time managing your site and more time publishing things that matter. And your footer will still be exactly where you put it.

← All posts