Directory Structure
Scottsdale Mint uses the Roots.io Bedrock WordPress framework, which reorganizes the standard WordPress directory layout for improved security, maintainability, and environment separation.
Root Directoryโ
scottsdalemint/ โ Repository root (NOT the web root)
โโโ AGENTS.md โ AI agent & developer reference (read this first)
โโโ auth.json โ Private Packagist auth (NEVER COMMIT)
โโโ bitbucket-pipelines.yml โ CI/CD pipeline
โโโ composer.json โ ALL plugins, WordPress core, and themes defined here
โโโ composer.lock โ Locked dependency versions
โโโ patches.lock.json โ Composer patch lock file
โโโ README.md โ Project README
โโโ UPDATE.md โ Update notes and changelog
โโโ wp-cli.yml โ WP-CLI path and URL configuration
โโโ ymir.yml โ Ymir (AWS Lambda) hosting configuration
โโโ .env โ Local secrets (NEVER COMMIT โ in .gitignore)
โโโ .env.example โ Template for .env
โโโ config/
โ โโโ application.php โ Main WordPress config (all env vars consumed here)
โ โโโ class-config-helper.php โ Plugin disabler utility class
โ โโโ environments/
โ โโโ development.php โ Development-specific overrides
โ โโโ local.php โ Local/Herd-specific overrides
โ โโโ staging.php โ Staging-specific overrides
โ โโโ production.php โ Production-specific overrides
โโโ docs/ โ This Docusaurus documentation site
โโโ nfusion/
โ โโโ live-price-chart/ โ NFusion spot price chart widget (standalone Webpack build)
โโโ patches/ โ Patch files applied to third-party plugins via Composer
โ โโโ 0001-Dev-CryptoWoo-Disable-Requests.patch
โ โโโ 0001-Dev-Walmart-patch-missing-required-properties.patch
โ โโโ 2FA-fix-path-in-twilio.patch
โ โโโ Kount-Remove-Unecessary-Logging.patch
โ โโโ [other patches]
โโโ scenario-testing/ โ Jest + Puppeteer end-to-end checkout tests
โโโ tools/
โ โโโ db-sync/ โ Database sync tool (prod/staging โ local)
โ โโโ nfusion-import/ โ NFusion product catalog CSV import scripts
โ โโโ s3-sync/ โ S3 media file sync tools
โโโ vendor/ โ Composer PHP packages (DO NOT EDIT)
โโโ vendor-static/ โ Static vendor packages (Wonolog/Monolog)
web/ โ The Web Rootโ
The web/ directory is the document root that the web server points to. Only files inside web/ are publicly accessible.
web/
โโโ index.php โ WordPress bootstrap (standard)
โโโ wp-config.php โ Loads config/application.php; handles CloudFront/Cloudflare IP
โโโ robots.txt โ Search engine crawl rules
โโโ google0763189db8ee5157.html โ Google Search Console verification
โโโ wp/ โ WordPress core (DO NOT EDIT โ Composer-managed)
โ โโโ wp-admin/
โ โโโ wp-includes/
โ โโโ [standard WP core files]
โโโ app/ โ Equivalent to wp-content/
โ โโโ mu-plugins/ โ Must-use plugins (auto-loaded before all others)
โ โโโ plugins/ โ All plugins (Composer-managed)
โ โโโ themes/ โ All themes (Composer-managed)
โ โโโ uploads/ โ Media uploads (S3 in production via Ymir)
โโโ tools/ โ Web-accessible admin/developer tools
web/app/ โ The WordPress Content Directoryโ
This replaces the standard wp-content/ directory. The constant WP_CONTENT_DIR points here.
mu-plugins/ โ Must-Use Pluginsโ
Must-use plugins are automatically loaded on every request, before regular plugins. They cannot be deactivated through the WordPress admin.
mu-plugins/
โโโ a-suma-perfmatters-filters.php โ Overrides Perfmatters cache path
โโโ bedrock-plugin-disabler/ โ Allows disabling plugins via config (not DB)
โโโ disable-deprecation.php โ Suppresses deprecated feature notices
โโโ disable-woocommerce-block.php โ Disables WooCommerce block editor features
โโโ perfmatters_mu.php โ Perfmatters performance monitoring
โโโ wonolog.php โ Structured JSON logging setup (Wonolog + Monolog)
plugins/ โ All Pluginsโ
All plugins are installed via Composer. Key custom plugins:
plugins/
โโโ scottsdale-ach-gateway/ โ Custom ACH payment gateway (Plaid + iTransact)
โโโ suma-woo-emails/ โ Custom WooCommerce transaction emails
โโโ suma-woo-order-tracking/ โ Customer order tracking page
โโโ suma-patches/ โ Site-specific patches and environment overrides
โโโ suma-dealer-locator/ โ Google Maps dealer finder
โโโ suma-faqs/ โ FAQ management
โโโ sumatra-utilities/ โ Shared utility library (Rhino Group)
โโโ sumatra-logger/ โ Custom structured logging integration
โโโ wc-admin-precious-metals-data/ โ Admin analytics (ounces sold, daily report)
โโโ back-in-stock-notifications-for-klaviyo/ โ Klaviyo back-in-stock forms
โโโ reserved-stock-pro/ โ Inventory reservation during checkout
โโโ woo-custom-related-products/ โ Custom related product logic
โโโ [40+ third-party plugins]
themes/ โ Themesโ
themes/
โโโ suma-elementor/ โ The only active theme (v2.3.0)
โโโ style.css โ Theme header declaration
โโโ functions.php โ Theme bootstrap
โโโ inc/ โ All PHP classes (50+ classes)
โโโ dist/ โ Compiled CSS and JS (from Webpack Mix)
โโโ src/ โ SCSS and JavaScript source files
โโโ template-parts/ โ Reusable PHP template fragments
โโโ woocommerce/ โ WooCommerce template overrides
โโโ cryptowoo/ โ CryptoWoo template overrides
โโโ suma-dealer-locator/ โ Dealer locator templates
The suma-elementor Theme inc/ Deep Diveโ
The theme's inc/ directory contains all PHP business logic:
inc/
โโโ class-theme.php โ Main entrypoint, loads all classes
โโโ class-woocommerce.php โ 760+ lines of WC hooks and filters
โโโ class-admin.php โ WP admin customizations
โโโ class-frontend.php โ Frontend scripts, head/body injection
โโโ class-customizer.php โ WordPress Customizer integration
โโโ class-elementor.php โ Elementor extension registration
โโโ class-elementor-widgets.php โ Custom widget registration
โโโ class-user.php โ User account / role management
โโโ class-post.php โ Post type utilities
โโโ class-pricing.php โ Global pricing manager
โโโ class-pricing-tools.php โ Pricing calculation utilities
โโโ class-trends.php โ Historical pricing trend data
โโโ class-medoo.php โ Medoo database wrapper
โโโ class-klaviyo.php โ Klaviyo API integration
โโโ class-yotpo.php โ Yotpo reviews integration
โโโ class-settings.php โ Theme settings/option keys
โโโ class-translations.php โ Translation/i18n utilities
โโโ endpoints/ โ REST API endpoint classes (18+ endpoints)
โโโ product/ โ Product pricing, stock, visibility classes
โโโ checkout/ โ Checkout customization + Kount Pre-Auth
โโโ order/ โ Order handling classes
โโโ email/ โ Email-related helpers
โโโ account/ โ My Account page customizations
โโโ cart/ โ Shopping cart logic
โโโ apps/ โ Mobile app helpers
โโโ yith/ โ YITH plugin integrations
โโโ tags/ โ Custom Elementor dynamic tags
โโโ widgets/ โ Custom Elementor widget classes
โโโ skins/ โ Custom Elementor widget skin variations
โโโ traits/ โ PHP traits reused across classes
โโโ integration/
โโโ class-algolia.php โ Algolia CURL/referer configuration
โโโ class-translate-press.php โ TranslatePress integration
โโโ class-kount-ens-endpoint.php โ Kount fraud decision callback
โโโ class-walmart.php โ Walmart Marketplace integration
Key Bedrock Conventionsโ
| Standard WP Path | Bedrock Path | Notes |
|---|---|---|
/wp-content/ | /web/app/ | WP_CONTENT_DIR |
/wp-content/plugins/ | /web/app/plugins/ | Managed by Composer |
/wp-content/themes/ | /web/app/themes/ | Managed by Composer |
/wp-content/uploads/ | /web/app/uploads/ | S3 in production |
/wp-config.php | /web/wp-config.php | Loads config/application.php |
| WordPress core | /web/wp/ | Composer-managed, do NOT edit |
| Admin URL | /wp/wp-admin/ | Note the /wp/ prefix |
Adding New Filesโ
| What | Where | How |
|---|---|---|
| New plugin | web/app/plugins/new-plugin/ | Add to composer.json, run composer require |
| New theme | web/app/themes/new-theme/ | Add to composer.json |
| WordPress core update | web/wp/ (auto) | Update version in composer.json, run composer update |
| New patch | patches/new-patch.patch | Add entry in composer.json under extra.patches |
| New MU plugin | web/app/mu-plugins/ | Create PHP file directly (no Composer entry needed) |
| New Elementor widget | web/app/themes/suma-elementor/inc/widgets/ | Create class file, register in class-elementor-widgets.php |
| New REST endpoint | web/app/themes/suma-elementor/inc/endpoints/ | Create class extending base, register in class-theme.php |