How to customize and keep things up-to-date?

The key to upgrade-proof customizations is to never edit plugins directly. You should use actions and filters to hook into a plugin’s code. Not everything is customizable through these hooks, though. The amount of useful hooks provided depends on the quality of the plugin code.

Also see: Hooking in to plugins


If you really would like to change anything you want in a plugin, without being constrained by the provided hooks, here’s an alternative approach that I can think of. Put the plugin in version control, then create your own branch with customizations. Whenever a plugin update is provided by the author, check out the master branch, run the updates, then merge the updates back into your own branch. You may have to fix some merge conflicts.