Files
szkoleniauryzaj.pl/.paul/codebase/architecture.md
2026-04-26 23:47:49 +02:00

95 lines
4.5 KiB
Markdown

# Architecture
> Generated by /paul:map-codebase — 2026-04-26
## Overview
Production e-learning platform. Courses are WooCommerce products. Users browse, reserve/buy spots, and join a bbPress forum community. All page layouts are built via Divi Visual Builder; PHP customizations live in the child theme.
## Directory Structure
```
szkoleniauryzaj.pl/
├── wp-config.php — DB config, WP settings, filesystem perms
├── .htaccess — Apache rewrites + Wordfence WAF rules
├── .user.ini — Wordfence WAF auto_prepend_file
├── cron-products.php — CUSTOM: auto-unpublish products past offer end date
├── wp-content/
│ ├── themes/
│ │ ├── body-relax/ — ACTIVE child theme (all custom code here)
│ │ ├── Divi/ — Parent theme (53 MB, do NOT edit)
│ │ └── twentytwentytwo/ — Inactive
│ ├── plugins/ — 45 plugins (~200 MB total)
│ ├── mu-plugins/
│ │ └── installatron_hide_status_test.php — Disables WP auto-update nag
│ └── uploads/ — Media (server-only, not in repo)
├── .vscode/
│ ├── ftp-kr.json — FTP deployment config
│ ├── sftp.json — SFTP alternative config
│ └── settings.json — SCSS compiler config
└── .paul/ — Project management (not deployed)
```
## Active Child Theme: body-relax
```
body-relax/
├── functions.php — WooCommerce hooks, button text, stock display
├── style.css — Theme header + responsive CSS (981/768/480px breakpoints)
├── screenshot.jpg — Theme preview
└── divi-children-engine/
├── divi_children_engine.php — Loader (includes all engine files)
├── css/
│ └── custom-metabox.css — Admin metabox styling
└── includes/
├── divi_children_functions.php — 2060 lines: Divi customizer extensions, CSS injection
├── custom_codes.php — Admin UI for CSS classes/IDs + "magic codes"
└── divi-mods/
└── divi_mod_functions.php — Overrides et_pb_blog and et_pb_cta shortcodes
```
## Customization Layers (top → bottom)
1. **Divi Visual Builder** — Page/post content (drag-drop, stored as post meta)
2. **body-relax/functions.php** — WooCommerce filters (stock text, CTA button labels)
3. **divi-children-engine** — Customizer extensions, admin UI, Divi shortcode overrides
4. **Divi parent theme** — Core styling, builder components, page templates
5. **WooCommerce** — Product system (courses = products, bookings = orders)
6. **45 Plugins** — SEO, analytics, payments, security, media feeds
7. **WordPress core** — Database, hook system, REST API
## Key Custom Functions
| File | Function | What it does |
|------|----------|-------------|
| `functions.php:30` | `wcs_custom_get_availability()` | Polish stock text: "Duża ilość wolnych miejsc", countdown for last 1-4 spots, "WSZYSTKIE MIEJSCA WYKUPIONE" |
| `functions.php:92` | `bbloomer_custom_add_to_cart_single_product()` | Changes "Add to Cart" by category: webinar/book → "Kup teraz", course → "Rezerwuj miejsce" |
| `functions.php:108` | `bbloomer_archive_custom_cart_button_text()` | Same logic for archive/shop pages |
| `cron-products.php` | (standalone) | Reads ACF `end_date_of_the_offer`, sets product to draft when offer expires |
## Hooks Registered in functions.php
| Type | Hook | Function |
|------|------|---------|
| `add_action` | `wp_enqueue_scripts` | `dce_load_divi_stylesheet()` — enqueues Divi parent CSS |
| `add_filter` | `woocommerce_get_availability` | `wcs_custom_get_availability()` |
| `add_filter` | `woocommerce_product_single_add_to_cart_text` | `bbloomer_custom_add_to_cart_single_product()` |
| `add_filter` | `woocommerce_product_add_to_cart_text` | `bbloomer_archive_custom_cart_button_text()` |
## Data Flow: Course Purchase
```
User → Shop/Archive page
→ WooCommerce product (course) with custom "Rezerwuj miejsce" button
→ Cart → Checkout (with NIP field, custom fields)
→ PayU payment gateway (BLIK/card/bank transfer)
→ Order confirmation → bbPress forum access (community)
```
## Database
- Name: `garbary_szkury`
- Prefix: `wp_`
- Host: localhost
- Key custom data: ACF fields on products (e.g., `end_date_of_the_offer`)