Files
jachty.pkmp.com.pl/CLAUDE.md
2026-05-06 00:18:37 +02:00

2.2 KiB

Projektowe zasady dla jachty3.pagedev.pl

Stack

  • Język: PHP 7.4+
  • CMS: WordPress 6.x
  • Page Builder: Elementor Pro
  • Frontend: FullCalendar.js v6 (CDN), jQuery
  • Baza danych: MySQL — WordPress CPT + custom tabela wp_yacht_availability
  • Integracja: Google Calendar API v3 (OAuth 2.0, natywna implementacja)
  • Deployment: FTP via ftp-kr (VS Code extension)

Główny plugin

wp-content/plugins/yacht-booking-system/ — namespace YachtBooking\

Zasady kodu PHP

  • WordPress Coding Standards (nie PSR-12)
  • Nazewnictwo: PascalCase dla klas, snake_case dla metod i zmiennych
  • Singleton pattern dla głównych klas
  • Security: nonce verification + sanitize + escape na wyjściu
  • Każda operacja DB przez $wpdb->prepare() — bez surowych zapytań SQL

Baza danych

  • Custom tabela: wp_yacht_availability (yacht_id, date, status, booking_id)
  • CPT: yacht (meta: capacity, price_per_day, gcal_id, features)
  • CPT: yacht_booking (meta: yacht_id, start_date, end_date, status, customer_*, total_price, gcal_event_id)
  • Schemat dokumentowany w .paul/codebase/db_schema.md
  • Zmiany schematu przez klasę Installer (incremental upgrades)

REST API

Namespace: /wp-json/yacht-booking/v1/

  • GET /yachts, GET /yachts/{id} — publiczne
  • GET /availability/{yacht_id} — publiczne
  • POST /bookings — publiczne (wymaga X-WP-Nonce)
  • GET /bookings, PUT /bookings/{id}/status — admin only

Testy

  • Brak automatycznych testów — testy manualne przez pliki test-*.php w root projektu
  • Po każdej zmianie weryfikuj: php -l <plik> (syntax check)

Deployment

  1. Edytuj pliki lokalnie w VS Code
  2. Deploy przez FTP (ftp-kr) — automatyczny przy zapisie lub ręczny
  3. Konfiguracja FTP: .vscode/ftp-kr.json

Frontend

  • Elementor widget: frontend/class-calendar-widget.php
  • Shortcode: [yacht_calendar yacht_id="X"]
  • JavaScript: IIFE pattern (function($) {...})(jQuery)
  • CSS: mobile-first, BEM-like nazewnictwo klas
  • Nie używaj npm/webpack — zasoby statyczne lub CDN

Wdrażanie zmian Google Calendar

  • OAuth tokens w wp_options (klucze: yacht_booking_*)
  • Auto-refresh tokenów w class-oauth-handler.php
  • Sync: class-sync-controller.php (hooks + cron)