Editing core files is fast on day one and painful on every upgrade. Use hooks for behavior, themes for layout, plugins for billing and spam. That way you can diff and roll back custom work. Sites with payments and custom routes need this split or releases become guesswork.
See architecture notes. Log hook conflicts and callback breaks from real deploys, not from copy-pasted snippets.
Avoid duplicating responsibilities. If a plugin already mutates listing submit flow, do not repeat the same logic in theme overrides.
Track compatibility by three axes: Osclass version, PHP runtime, and critical plugin versions. Keep a simple matrix in repository so release decisions are evidence-based.
Marketplace incidents often come from hidden side effects between plugins and custom snippets. Payment plugins can influence listing state, messaging plugins can alter account flow, and cache plugins can break session-dependent widgets.
Deploy one high-impact customization at a time and verify complete user journeys: publish, pay, search, message, and moderate.
Fork core only if hooks cannot do the job and you have developers to merge every upstream release. Most sites should stay on plugins and hooks.
Use version control for all custom code, changelog entries per release, and repeatable test script for critical flows. Before deployment: run staging validation, backup verification, rollback rehearsal, and PHP compatibility check. After deployment: monitor logs, callback success, cron health, and indexing behavior.
After route or rewrite changes, fetch a few listing URLs and check Search Console for new duplicate paths.
This keeps custom code from blocking the next core update.
I'm Oliver Bk. I build classifieds marketplaces and the scripts around them - imports, crawlers, payment hooks, cleanup jobs that should have shipped in core. Day to day that's PHP, HTML, CSS, and JavaScript; Python when listing data needs scraping or reshaping before it lands in Osclass.
These articles come from live projects: what broke, what we changed, what staging should have caught. A fair share of my fixes still start with a bug report, coffee, and a script that was only meant to run once.
This article was last updated on 9. June 2026.