The Problem
You found a snippet on a tutorial site that adds a feature to WordPress — a custom shortcode, an admin tweak, an extra image size. The snippet says “add this to your functions.php“. Edit the parent theme’s functions.php directly and two things happen: the next theme update wipes the change, or a single typo locks you out of the whole site. The fix is to use a child theme or a snippets plugin so your code lives somewhere safe. This tutorial walks through both methods and the recovery steps if a snippet breaks the site.
What You’ll Need
- WordPress version: 5.0 or higher (any current install)
- Permissions needed: Administrator role plus FTP, SSH, or hosting File Manager access for recovery
- Time to complete: 10-20 minutes for the first snippet, longer if you set up a child theme from scratch
- Difficulty level: Intermediate
- Prerequisites: Active theme, plain-text editor (VS Code, Notepad++, or Sublime), and a recent backup of the site before any code changes
Step 1: Set Up a Child Theme First
Open your hosting File Manager or connect via FTP. Go to /wp-content/themes/. If a child theme already exists for your active theme, open it. If not, create a new folder named your-theme-child. Add a style.css with the required header, then add an empty functions.php file. Activate the child theme under Appearance → Themes. Our child theme tutorial walks through the full structure if you have not done this before. Always add custom code to the child theme, never the parent.
[SCREENSHOT: child-theme-folder-structure]
Step 2: Locate functions.php in Your Child Theme
Navigate to /wp-content/themes/your-theme-child/functions.php in the File Manager or your FTP client. Open the file in your editor. The file may be empty or contain only a single PHP opening tag. The opening tag must be on the first line with no spaces or characters before it. Whitespace before <?php breaks the entire site with a “headers already sent” error. Save a backup copy of the file before adding code — copy the contents to a separate file or download a clean copy first.
[SCREENSHOT: functions-php-empty-file]
Step 3: Add Your First Snippet Safely
Paste your snippet below the opening PHP tag. Always include a comment that names the snippet and explains what it does:
What this does: changes the WordPress dashboard footer text from the default “Thank you for creating with WordPress” to your own message.
<?php
// Custom dashboard footer text
function wpm_custom_admin_footer() {
return 'Built and maintained by Your Agency — 2026';
}
add_filter( 'admin_footer_text', 'wpm_custom_admin_footer' );
Save the file and refresh the WordPress dashboard. The new footer text appears at the bottom. Add only one snippet at a time. Test each snippet on the front end and back end before adding the next.
[SCREENSHOT: dashboard-custom-footer]
Step 4: Use Code Snippets Plugin Instead
Editing files makes you nervous? Install Code Snippets from Plugins → Add New. Activate it and go to Snippets → Add New. Pick Functions (PHP) as the snippet type. Paste the same code without the <?php tag (the plugin adds it for you):
What this does: registers a custom shortcode that prints the current year wherever you write [current_year].
function wpm_current_year() {
return date( 'Y' );
}
add_shortcode( 'current_year', 'wpm_current_year' );
Set the snippet to Run snippet everywhere and click Save Changes and Activate. Code Snippets keeps your edits separate from theme files. The plugin also detects fatal errors before saving, which prevents most white-screen lockouts.
[SCREENSHOT: code-snippets-php-editor]
Step 5: Test for White Screen Errors
Open your site’s front end in a private browser window. Reload the WordPress dashboard. If both load normally, the snippet is safe. If you see a white screen or a “There has been a critical error” message, the snippet has a syntax error. Check the error message for a line number. Most issues are missing semicolons, mismatched braces, or stray spaces before the opening PHP tag. Always run a backup before edits — our backup guide covers automated daily snapshots that let you recover with one click.
[SCREENSHOT: wordpress-critical-error-screen]
Step 6: Recover via FTP If Locked Out
If the snippet locks you out of the dashboard, do not panic. Open your FTP client or hosting File Manager. Navigate to /wp-content/themes/your-theme-child/functions.php. Open the file and remove the snippet you added last. Save and re-upload. The site comes back within seconds. If you used the Code Snippets plugin instead, append ?cs_safe_mode=true to your dashboard URL to disable all snippets and regain access. Always test new code on a staging site before applying it to production.
[SCREENSHOT: ftp-edit-functions-php]
Troubleshooting
Error: “Headers already sent” warning at the top of every page.
Fix: Whitespace exists before <?php or after the closing ?>. Open the file and delete any blank lines before the opening tag.
Error: Snippet works on a fresh install but breaks after a theme update.
Fix: The code lives in the parent theme’s functions.php and the update overwrote it. Move the snippet to your child theme or to Code Snippets.
Error: White screen of death after activating a snippet.
Fix: A PHP syntax error is fatal. Connect via FTP and remove the last snippet. Enable WP_DEBUG in wp-config.php to see the exact error message.
Error: Snippet runs but does nothing visible on the front end.
Fix: The hook name is wrong or the priority is too low. Check the WordPress action and filter reference for the correct hook.
Quick Recap
- Child themes keep custom code safe through parent theme updates
- Code Snippets plugin gives you a safer editor with syntax validation
- One snippet at a time — test each before adding the next
- Watch for whitespace before
<?phpand unmatched braces in PHP code - For deeper file safety, our backup plugin comparison covers tools that snapshot before each edit. Reference: the official WordPress theme functions guide on developer.wordpress.org
