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.
Related Posts:
- Plugin SVN & update API – how are plugins identified?
- Upgrading WordPress and Plugins; any Tips to Avoid Trouble?
- How to override wp-login.php
- Make page template that is just an “include” of another?
- Updating Existed RocketTheme Theme on WordPress
- Why do posts disappear from admin after upgrading from WP 2.7.1 to 3.0.1?
- Updates for a private theme
- $wpdb->replace: WHERE?
- Installing new theme on running site
- How to update theme from localhost to online site
- Changing update message from Newspaper child theme
- Will WordPress updates remove Gutenberg Additional Classes?
- To merge customized codes upon wordpress update
- Update to WordPress 4.9.2, but have heavily customized theme
- How to: Easily Move a WordPress Install from Development to Production?
- Is there a flowchart for WordPress loading sequence?
- Essential technical features for high-end WordPress web hosting? [closed]
- How to remove admin menu pages inserted by plugins?
- How to put logs in WordPress
- What is your best practice to execute one-time scripts?
- How to get the Date Format and Time Format settings for use in my template?
- Where are Additional CSS files stored
- Best Practices for Regression Testing WordPress Websites?
- Remove wrapping div and ul from output of wp_nav_menu
- What Is The Use Of map_meta_cap Filter?
- get post author id outside loop
- Custom Walker: how to get ID in function start_lvl
- Customizing a WordPress theme without changing it?
- Creative uses of WordPress [closed]
- How to *remove* a parent theme page template from a child theme?
- How do I make my child theme re-apply the settings that were customised when its parent was active?
- Multiple Inputs in a Customizer Control
- New WP_Customize API – how does it work under the hood?
- Embedding a SOAP Client into a WordPress Plugin?
- Is there anything that Joomla or Drupal can do that can’t be done in WordPress? [closed]
- Update widget form after drag-and-drop (WP save bug)
- Data sanitization: Best Practices with code examples
- How to benchmark a WordPress installation? [closed]
- Should I delete the default themes?
- Moving WP install from local to live, what about wp_posts GUID?
- Modified wp.media.view.Settings.Gallery in Backbone JS, but editing doesn’t work
- Running Gutenberg React in Development Mode
- Prevent WordPress from automatically installing a new theme each year
- Can we use one WordPress installation for multiple databases, domains and content directories
- Is there a blank theme framework compatible with WP 3.0? [closed]
- Users with custom roles not showing in post author select box
- How to use more than 256MB of memory in the admin?
- How do register_sidebar() and get_sidebar() work together?
- How do you get formatted content of a post using the WordPress API?
- Localization: I want the backend: english and frontend in defined language
- Are there any forks of WordPress (and what is different about them)?
- How to Change 404 page title
- Make Custom Metaboxes Collapse by Default
- WordPress Paginate $wpdb->get_results
- Custom maintenance page
- Add button to TinyMCE bar without creating a plugin
- Why do I get the timeout warning?
- How to add a new product type on woocommerce product types? [closed]
- How to include own css on wordpress tinymce editor?
- How to disable page delete
- add button to post edit page when post_status=publish
- how to override woocommerce specific loop or archive-product.php [closed]
- Modify existing plugin function using filter (without modifying the plugin directly)
- Rename UPLOADS folder with custom WP_CONTENT_DIR
- WordPress hook before inserting post into database
- Any post install tips after installing WordPress 3.0.1?
- Making Custom Fields Standard in the Admin UI
- Remove WordPress theme from a specific page
- Version Control: Entire site or just pieces?
- Getting a stack trace when an error occurs?
- Check for and enforce unique value in user-entered custom meta field in WP Admin
- Backup the Database and Restore from the Backup?
- get_pages() not ordering as it should
- Scaling a WP eCommerce site
- Custom Search Query
- How to remove comment section from page only , not from posts pages?
- Looking for a lightweight theme using WP3 new tags and features (not 2010) [closed]
- Why doesn’t WP_Image_Editor save images using the Filesystem API?
- Pitfalls when Distributing Plugins that Access SOAP Web Services?
- How to get current_cat in navbar, in single post
- Default value for add_settings_field
- Seamless integration between WordPress and BBpress
- WordPress 3 MU for a development/stage/production site
- Disable Visible Edit Shortcuts in the Customizer
- How to make a script load after Custom Block is loaded in the editor?
- Updating WordPress overwriting customization tweaks – strategies?
- What is the best way to customise admin files so they survive future upgrades?
- Hide admin notices/notifications from everyone but super admin?
- Change the login button on the login page
- How to customize the default HTML for WordPress Attachments
- Verify nonce in REST API?
- Add custom html to last sub-menu item
- Get all products with a custom attribute
- Customizing the Subject Field in WordPress’ Notification Emails?
- How to update the delete user confirmation form?
- How to move wp-content (or uploads) outside of the WordPress directory
- Need help with friendly URL’s in WordPress
- How to add Disqus comment count
- How to keep a WordPress site synchronized between two servers?
- Modify column_author in WP_Comments_List_Table