Kirby doesn't delete fields from content files if you later remove them from your blueprints, rename them, or if you add fields manually with an editor. Especially during development, you therefore often end up with a lot of unused stuff you will probably want to clean up before handing a project over to your client.
This script cleans up your page or file content files. It compares fields in the content files with those defined in the blueprint and removes all undefined fields, no matter if they contain content or not.
You can use the script with a pages or a files collection. By default, the script below runs through the complete pages index. Adapt
$collection as required. It is not recommended to run through the complete index of a large site or through thousands of files because you might run into a timeout.
You can also set the fields to ignore in the
$ignore array. By default, we ignore the following fields:
uuid, for pages
slug and for files
Create a new
cleanup.php file in your site root and copy the script code into it.
Then run the script with http://yourdomain.com/cleanup.php. You can also run the script on the command line or put the code into a route if you cannot call a PHP script in your browser. Delete the script when done.
Before you use this script, make sure you have a backup of your project.
Do not use this script if your project contains fields not defined in blueprints on purpose.
Instead of echoing the results on screen, you can also write them into a log file if you prefer.