feat: restructure docs into store, marketing, builder, and config sections

This commit is contained in:
Dwindi Ramadhana
2026-02-05 00:46:35 +07:00
parent 259496bc86
commit 1d1daefb37
22 changed files with 950 additions and 103 deletions

View File

@@ -0,0 +1,14 @@
---
title: Page Builder
description: Design your store visually.
---
# Page Builder
The WooNooW Page Builder allows you to create stunning, responsive pages without writing code.
## Key Concepts
* **[Visual Editor](/docs/builder/visual-editor)**: Drag-and-drop interface explanation.
* **[Sections](/docs/builder/sections)**: Guide to all available blocks (Hero, Features, Content).
* **[Special Pages](/docs/builder/special-pages)**: How to customize the Shop, Cart, and Checkout pages.

View File

@@ -0,0 +1,22 @@
---
title: Section Components
description: Building blocks of your pages.
---
# Section Components
WooNooW includes a library of pre-designed sections.
## Available Sections
### Hero Section
The impact statement of your page. Includes a large headline, subheadline, call-to-action buttons, and a background image or color.
### Feature Grid
Showcase your services or product highlights in a clean grid layout. Supports 2, 3, or 4 columns.
### Content Block
A versatile text block with optional image. Great for "About Us" sections or storytelling. You can position the image on the left or right.
### Call to Action (CTA) Banner
A high-converting strip designed to get clicks. Perfect for newsletter signups or limited-time offers.

View File

@@ -0,0 +1,17 @@
---
title: Special Pages
description: Customizing Shop and Checkout pages.
---
# Special Pages
Unlike standard pages, "Special Pages" like the Shop, Cart, and Checkout are dynamically generated by WooCommerce. WooNooW gives you control over their wrapper and styling.
## The Shop Page
You can set a specific page to be your "Shop" page in **WooCommerce > Settings > Products**.
Once set, WooNooW wraps this product grid in your global theme settings (Header, Footer, Container Width).
## Cart & Checkout
By enabling **SPA Mode** (Full or Checkout Only), WooNooW replaces the standard slow page loads with an instant, app-like transition.
* **Checkout Only Mode**: Users browse your normal site, but when they hit "Checkout", they enter the fast SPA data tunnel.
* **Full SPA Mode**: The entire shopping experience is instant.

View File

@@ -0,0 +1,26 @@
---
title: Visual Editor
description: Drag-and-drop your store into existence.
---
# Visual Editor
The Visual Editor is the heart of the WooNooW Page Builder. It looks exactly like your front-end store, but allows you to edit content in real-time.
## The Interface
### 1. The Canvas
The central area is your webpage. You can click on any element (Text, Image, Button) to edit it directly.
### 2. The Inspector Panel (Left Sidebar)
When you select a section or element, this panel shows all customizable options:
* **Content Tab**: Change text, links, and images.
* **Design Tab**: Adjust colors, padding, and alignment.
### 3. The Top Bar
* **Device Toggle**: Switch between Desktop and Mobile view to ensure your site looks great everywhere.
* **Save Button**: Publish your changes instantly.
## Adding Content
To add a new section, hover over the canvas and click the **(+) Add Section** button that appears between existing blocks.

View File

@@ -0,0 +1,19 @@
---
title: Appearance Settings
description: Colors and Typography.
---
# Appearance
Customize your brand without coding.
## Colors
We use a smart palette system.
* **Primary**: Headlines and main buttons.
* **Secondary**: Subheadings and UI elements.
* **Accent**: Highlights and links.
## Typography
Choose from GDPR-compliant, locally hosted font pairings like:
* **Modern**: Inter
* **Editorial**: Playfair Display

View File

@@ -0,0 +1,17 @@
---
title: Email Settings
description: Transactional emails and SMTP.
---
# Email Settings
WooNooW replaces default WooCommerce emails with beautiful, responsive templates.
## Template Editor
Go to **Settings > Email** to customize:
* **Order Confirmation**
* **Shipping Updates**
* **Account Notifications**
## SMTP Configuration
Ensure your emails hit the inbox, not spam. We recommend using a dedicated SMTP service like SendGrid or Postmark.

View File

@@ -0,0 +1,18 @@
---
title: General Settings
description: Core store settings.
---
# General Settings
Located in **Appearance > General**.
## SPA Mode
Decide how much of your site uses our ultra-fast Single Page Application technology.
* **Disabled**: Use standard WordPress templates.
* **Checkout Only**: Normal browsing, fast checkout.
* **Full SPA**: The entire site is an app.
## Container Width
* **Boxed (Recommended)**: Limits content width (max 1152px) for better readability.
* **Full Width**: Content stretches to the screen edges.

View File

@@ -0,0 +1,16 @@
---
title: Configuration
description: Configure every aspect of your store.
---
# Configuration
Fine-tune your store's behavior and appearance.
## Settings Areas
* **[General](/docs/configuration/general)**: SPA Mode, Container Width, Typography.
* **[Appearance](/docs/configuration/appearance)**: Theme colors and branding.
* **[Modules](/docs/configuration/modules)**: Enable or disable specific features to keep your store lightweight.
* **[Email](/docs/configuration/email)**: Customize transactional emails and set up SMTP.
* **[Security](/docs/configuration/security)**: Protect your store with built-in security features.

View File

@@ -0,0 +1,16 @@
---
title: Licensing
description: Activate your store.
---
# Licensing
To receive updates and support, you must activate your license key.
## Activation
1. Go to **Settings > License**.
2. Enter your key.
3. Click "Activate".
## OAuth Connection
Some features require connecting your store to our cloud. Click "Connect with WooNooW" to authorize the connection securely.

View File

@@ -0,0 +1,311 @@
---
title: Custom Notification Channels
description: Learn how to add custom notification channels like WhatsApp, SMS, or Telegram to WooNooW
---
# Custom Notification Channels
WooNooW supports custom notification channels through a pluggable architecture. You can extend the notification system to send messages via WhatsApp, SMS, Telegram, or any other service.
## Architecture Overview
The multi-channel notification system consists of three core components:
1. **`ChannelInterface`** - Contract that all channels must implement
2. **`ChannelRegistry`** - Central registry for managing channels
3. **`NotificationManager`** - Sends notifications through registered channels
```mermaid
graph LR
A[NotificationManager] --> B[ChannelRegistry]
B --> C[Email Channel]
B --> D[WhatsApp Channel]
B --> E[SMS Channel]
B --> F[Custom Channel]
```
## Creating a Custom Channel
### Step 1: Implement ChannelInterface
Create a class that implements `WooNooW\Core\Notifications\Channels\ChannelInterface`:
```php
<?php
namespace MyPlugin\Channels;
use WooNooW\Core\Notifications\Channels\ChannelInterface;
class WhatsAppChannel implements ChannelInterface {
public function get_id() {
return 'whatsapp';
}
public function get_label() {
return __('WhatsApp', 'my-plugin');
}
public function is_configured() {
$api_key = get_option('my_whatsapp_api_key');
return !empty($api_key);
}
public function send($event_id, $recipient, $data) {
// Your sending logic here
return [
'success' => true,
'message' => 'Sent successfully'
];
}
public function get_config_fields() {
return [
[
'id' => 'my_whatsapp_api_key',
'label' => 'API Key',
'type' => 'text',
],
];
}
}
```
### Step 2: Register Your Channel
Register your channel with the `ChannelRegistry` during plugin initialization:
```php
use WooNooW\Core\Notifications\ChannelRegistry;
use MyPlugin\Channels\WhatsAppChannel;
add_action('init', function() {
$channel = new WhatsAppChannel();
ChannelRegistry::register($channel);
});
```
### Step 3: Enable in Settings
Once registered, your channel will be available in the notification settings UI, where users can configure which events should use WhatsApp.
## Interface Reference
### get_id()
Returns a unique identifier for your channel.
```php
public function get_id(): string
```
**Example:**
```php
public function get_id() {
return 'whatsapp'; // or 'sms', 'telegram', etc.
}
```
### get_label()
Returns a human-readable label for the admin UI.
```php
public function get_label(): string
```
**Example:**
```php
public function get_label() {
return __('WhatsApp Business', 'my-plugin');
}
```
### is_configured()
Checks if the channel has all required configuration (API keys, credentials, etc.).
```php
public function is_configured(): bool
```
**Example:**
```php
public function is_configured() {
$api_key = get_option('my_whatsapp_api_key');
$phone = get_option('my_whatsapp_phone');
return !empty($api_key) && !empty($phone);
}
```
### send()
Sends a notification through this channel.
```php
public function send(string $event_id, string $recipient, array $data): bool|array
```
**Parameters:**
- `$event_id` - Event identifier (e.g., `'order_completed'`, `'newsletter_confirm'`)
- `$recipient` - Recipient type (`'customer'` or `'staff'`)
- `$data` - Context data including order, user, custom variables
**Returns:**
- `bool` - Simple success/failure
- `array` - Detailed result with `success` and `message` keys
**Example:**
```php
public function send($event_id, $recipient, $data) {
$phone = $this->get_recipient_phone($recipient, $data);
$message = $this->build_message($event_id, $data);
$response = wp_remote_post('https://api.provider.com/send', [
'body' => [
'to' => $phone,
'message' => $message,
'api_key' => get_option('my_api_key'),
],
]);
if (is_wp_error($response)) {
return [
'success' => false,
'message' => $response->get_error_message(),
];
}
return ['success' => true];
}
```
### get_config_fields()
Returns configuration fields for the admin settings UI (optional).
```php
public function get_config_fields(): array
```
**Field Structure:**
```php
[
'id' => 'option_name',
'label' => 'Field Label',
'type' => 'text|select|textarea',
'description' => 'Help text',
'options' => [], // For select fields
'default' => 'value',
]
```
## Complete Example: WhatsApp Channel
See the reference implementation:
[WhatsAppChannel.example.php](file:///Users/dwindown/Local%20Sites/woonoow/app/public/wp-content/plugins/woonoow/includes/Core/Notifications/Channels/WhatsAppChannel.example.php)
This example includes:
- ✅ Twilio API integration
- ✅ Phone number extraction from orders/users
- ✅ Message templates for common events
- ✅ Configuration fields for admin settings
## Message Customization
Use filters to customize messages for specific events:
```php
add_filter('woonoow_whatsapp_message_order_completed', function($message, $data) {
if (isset($data['order'])) {
$order = $data['order'];
return sprintf(
"🎉 Order #%s confirmed! Track here: %s",
$order->get_order_number(),
$order->get_view_order_url()
);
}
return $message;
}, 10, 2);
```
## Available Events
Your channel can handle any registered notification event:
| Event | Recipient | Data Available |
|-------|-----------|----------------|
| `order_completed` | customer | `order`, `user_id` |
| `order_cancelled` | customer | `order`, `user_id` |
| `newsletter_confirm` | customer | `email`, `confirmation_url` |
| `newsletter_welcome` | customer | `email`, `user_id` |
| `subscription_expiring` | customer | `subscription`, `user_id` |
See [Event Registry](/hooks/notifications#event-registry) for the complete list.
## Testing Your Channel
```php
// Manual test
use WooNooW\Core\Notifications\NotificationManager;
NotificationManager::send('order_completed', 'whatsapp', [
'order' => wc_get_order(123),
'user_id' => 1,
]);
```
## Best Practices
1. **Validate Configuration**: Always check `is_configured()` before attempting to send
2. **Handle Errors Gracefully**: Return detailed error messages for debugging
3. **Log Send Attempts**: Use `do_action()` for tracking/analytics
4. **Support Filtering**: Allow message customization via filters
5. **Rate Limiting**: Consider implementing rate limiting for API calls
## Hooks
### Registration Hook
```php
// Register channels during init
add_action('init', function() {
ChannelRegistry::register(new MyChannel());
});
```
### Custom Hooks in Your Channel
```php
// Allow logging/tracking
do_action('my_channel_sent', $event_id, $recipient, $result);
// Allow message customization
$message = apply_filters(
"my_channel_message_{$event_id}",
$default_message,
$data
);
```
## Troubleshooting
**Channel not appearing in settings?**
- Ensure `ChannelRegistry::register()` is called during `init`
- Check that `get_id()` returns a unique string
- Verify `is_configured()` returns `true`
**Messages not sending?**
- Check notification settings: Marketing > Notifications
- Verify the event has your channel enabled
- Enable debug mode and check logs
- Test `is_configured()` returns true
**API errors?**
- Validate API credentials in settings
- Check API provider status/quotas
- Review error logs for API responses
## Related Documentation
- [Notification System](/core-concepts/notifications)
- [Event Registry](/hooks/notifications#event-registry)
- [Notification Hooks](/hooks/notifications)

View File

@@ -0,0 +1,103 @@
---
title: Custom Page Templates
description: Learn how to register custom starting templates for the Page Editor.
---
WooNooW allows developers to register custom page templates. These templates appear in the "Create New Page" modal, allowing users to start with a pre-configured layout instead of a blank page.
## Registering a Template
To add a new template, use the `woonoow_page_templates` filter. You should append your template definition to the existing array.
```php
add_filter('woonoow_page_templates', function($templates) {
$templates[] = [
'id' => 'my-custom-landing',
'label' => 'Product Launch',
'description' => 'A structured page for new product announcements.',
'icon' => 'rocket', // Lucide icon name (lowercase)
'sections' => [
// Section definitions...
]
];
return $templates;
});
```
## Template Structure
Each template requires the following properties:
| Property | Type | Description |
| :--- | :--- | :--- |
| `id` | string | Unique identifier for the template. |
| `label` | string | Display name shown in the modal. |
| `description` | string | Short description of the template's purpose. |
| `icon` | string | Name of a Lucide icon (e.g., `layout`, `users`, `rocket`). |
| `sections` | array | Array of section objects defining the initial layout. |
### Defining Sections
Sections are the building blocks of a page. Each section object mimics the structure stored in the database.
```php
[
'id' => uniqid('section_'), // Must be unique
'type' => 'hero', // Component type (hero, feature-grid, image-text, etc.)
'props' => [
'title' => ['type' => 'static', 'value' => 'Hello World'],
'subtitle' => ['type' => 'static', 'value' => 'This is a template.'],
],
'styles' => [
'contentWidth' => 'contained', // 'full' or 'contained'
'padding' => 'medium',
]
]
```
## Example: Full Configuration
Here is a complete example that registers a "Support Page" template with a Hero and a FAQ section.
```php
add_filter('woonoow_page_templates', function($templates) {
$templates[] = [
'id' => 'support-page',
'label' => 'Support Center',
'description' => 'Help desk layout with search and FAQ grid.',
'icon' => 'help-circle',
'sections' => [
// Hero Section
[
'id' => uniqid('section_'),
'type' => 'hero',
'props' => [
'title' => ['type' => 'static', 'value' => 'How can we help?'],
'cta_text' => ['type' => 'static', 'value' => 'Contact Support'],
'cta_url' => ['type' => 'static', 'value' => '/contact'],
],
'styles' => ['contentWidth' => 'full']
],
// Content Section
[
'id' => uniqid('section_'),
'type' => 'content',
'props' => [
'content' => ['type' => 'static', 'value' => '<h2>Frequently Asked Questions</h2><p>Find answers below.</p>']
],
'styles' => ['contentWidth' => 'contained']
]
]
];
return $templates;
});
```
## Available Section Types
Common available section types include:
- `hero`: Large banner with title, subtitle, and CTA.
- `content`: Rich text editor content.
- `image-text`: Split layout with image and text.
- `feature-grid`: Grid of icons and text.
- `cta-banner`: Call to action strip.

View File

@@ -0,0 +1,17 @@
---
title: Quick Setup Wizard
description: Get your store running in minutes.
---
# Quick Setup Wizard
The Quick Setup Wizard is the fastest way to configure your WooNooW store. It launches automatically when you first activate the plugin.
## Steps
1. **Choose Your Mode**: Select between **Full SPA** (best for new stores) or **Checkout Only** (best for existing themes).
2. **Homepage Setup**: Automatically create a "Shop" page and set it as your home.
3. **Design**: Choose a "Boxed" or "Full Width" layout and pick a color theme.
4. **Launch**: Be redirected immediately to the Visual Builder.
If you skipped the wizard, you can always configure these options manually in **Appearance > General**.

View File

@@ -0,0 +1,13 @@
---
title: Coupons
description: Smart discounts and promotions.
---
# Coupons
Go beyond standard WooCommerce coupons.
## Smart Features
* **Auto-Apply**: Apply coupons automatically when cart conditions are met.
* **Bulk Generation**: Generate thousands of unique codes for partners.
* **URL Coupons**: Create links that automatically apply a discount when clicked.

View File

@@ -0,0 +1,14 @@
---
title: Marketing Suite
description: Grow your business with built-in tools.
---
# Marketing Suite
WooNooW comes with a powerful suite of marketing tools to help you retain customers and increase sales.
## Features
* **[Newsletter](/docs/marketing/newsletter)**: Create campaigns and manage subscribers directly from your dashboard.
* **[Coupons](/docs/marketing/coupons)**: Create smart coupons and automatic discounts.
* **[Wishlist](/docs/marketing/wishlist)**: Let customers save their favorite items for later.

View File

@@ -0,0 +1,20 @@
---
title: Newsletter
description: Manage subscribers and campaigns.
---
# Newsletter
A complete email marketing solution built into your store.
## Subscribers
Automatically capture emails at checkout or via the footer form.
* **GDPR**: Includes double opt-in support.
* **Segmentation**: Tag subscribers based on purchase history.
## Campaigns
Send beautiful HTML emails to your list.
1. Go to **Marketing > Newsletter**.
2. Click **New Campaign**.
3. Use the Template Builder to design your email.
4. Schedule or send immediately.

View File

@@ -0,0 +1,13 @@
---
title: Wishlist
description: Let customers save products.
---
# Wishlist
Enable the heart icon on your products.
## How it works
* **Guest Support**: Guests can save items (stored in cookies/local storage).
* **Account Sync**: When guests log in, their wishlist is saved to their account.
* **Sharing**: Customers can share their wishlist via social media or email.

View File

@@ -0,0 +1,16 @@
---
title: Customers
description: VIP classification and metrics.
---
# Customer Management
Know who buys from you.
## VIP Classification
WooNooW automatically tags customers based on their spend.
* **VIP**: High spenders.
* **Regular**: Frequent buyers.
* **New**: First-time buyers.
You can use these tags to segment your [Newsletter](/docs/marketing/newsletter) campaigns.

View File

@@ -0,0 +1,14 @@
---
title: Store Management
description: Manage your daily operations.
---
# Store Management
The Store Management section allows you to handle day-to-day operations efficiently.
## Sections
* **[Orders](/docs/store/orders)**: View and process customer orders with a modern interface.
* **[My Customers](/docs/store/customers)**: Manage your customer base and assign VIP statuses.
* **[Products](/docs/store/products)**: Quick overview and management of your catalog.

View File

@@ -0,0 +1,18 @@
---
title: Orders
description: Processing transactions.
---
# Order Management
View and manage orders in **Store Management > Orders**.
## The Order Table
A modern, real-time view of your sales.
* **Status Filters**: Quickly see what needs processing.
* **Quick Actions**: Print invoices or mark as shipped directly from the list.
## Order Details
Clicking an order reveals the deep dive view:
* **Timeline**: See exactly when payment happened and emails were sent.
* **Edit Items**: Modify the order contents before fulfillment.

View File

@@ -0,0 +1,17 @@
---
title: Products
description: Managing your catalog.
---
# Products
WooNooW enhances the standard WooCommerce product management.
## Quick Edit
Update prices and stock levels directly from the list view without opening each product.
## Types
We support all standard types:
* **Simple Product**
* **Variable Product**
* **Digital/Downloadable**