Phase 1: Core Documentation
- Created docs/ folder with 8 markdown documentation files
- Getting Started, Installation, Troubleshooting, FAQ
- Configuration docs (Appearance, SPA Mode)
- Feature docs (Shop, Checkout)
- PHP registry with filter hook for addon extensibility
Phase 2: Documentation Viewer
- DocsController.php with REST API endpoints
- GET /woonoow/v1/docs - List all docs (with addon hook)
- GET /woonoow/v1/docs/{slug} - Get document content
- Admin SPA /help route with sidebar navigation
- Markdown rendering with react-markdown
- Added Help & Docs to More page for mobile access
Filter Hook: woonoow_docs_registry
Addons can register their own documentation sections.
133 lines
3.9 KiB
PHP
133 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* WooNooW Documentation Registry
|
|
*
|
|
* This file registers all core documentation.
|
|
* Addons can extend using the 'woonoow_docs_registry' filter.
|
|
*/
|
|
|
|
namespace WooNooW\Docs;
|
|
|
|
/**
|
|
* Get all registered documentation
|
|
*
|
|
* @return array Documentation registry
|
|
*/
|
|
function get_docs_registry() {
|
|
$docs_dir = dirname(__FILE__);
|
|
|
|
// Core WooNooW documentation
|
|
$docs = [
|
|
'core' => [
|
|
'label' => 'WooNooW',
|
|
'icon' => 'book-open',
|
|
'items' => [
|
|
[
|
|
'slug' => 'getting-started',
|
|
'title' => 'Getting Started',
|
|
'file' => $docs_dir . '/getting-started.md',
|
|
],
|
|
[
|
|
'slug' => 'installation',
|
|
'title' => 'Installation',
|
|
'file' => $docs_dir . '/installation.md',
|
|
],
|
|
[
|
|
'slug' => 'troubleshooting',
|
|
'title' => 'Troubleshooting',
|
|
'file' => $docs_dir . '/troubleshooting.md',
|
|
],
|
|
[
|
|
'slug' => 'faq',
|
|
'title' => 'FAQ',
|
|
'file' => $docs_dir . '/faq.md',
|
|
],
|
|
],
|
|
],
|
|
'configuration' => [
|
|
'label' => 'Configuration',
|
|
'icon' => 'settings',
|
|
'items' => [
|
|
[
|
|
'slug' => 'configuration/appearance',
|
|
'title' => 'Appearance Settings',
|
|
'file' => $docs_dir . '/configuration/appearance.md',
|
|
],
|
|
[
|
|
'slug' => 'configuration/spa-mode',
|
|
'title' => 'SPA Mode',
|
|
'file' => $docs_dir . '/configuration/spa-mode.md',
|
|
],
|
|
],
|
|
],
|
|
'features' => [
|
|
'label' => 'Features',
|
|
'icon' => 'layers',
|
|
'items' => [
|
|
[
|
|
'slug' => 'features/shop',
|
|
'title' => 'Shop Page',
|
|
'file' => $docs_dir . '/features/shop.md',
|
|
],
|
|
[
|
|
'slug' => 'features/checkout',
|
|
'title' => 'Checkout',
|
|
'file' => $docs_dir . '/features/checkout.md',
|
|
],
|
|
],
|
|
],
|
|
];
|
|
|
|
/**
|
|
* Filter: woonoow_docs_registry
|
|
*
|
|
* Allows addons to register their own documentation.
|
|
*
|
|
* @param array $docs Current documentation registry
|
|
* @return array Modified documentation registry
|
|
*
|
|
* @example
|
|
* add_filter('woonoow_docs_registry', function($docs) {
|
|
* $docs['my-addon'] = [
|
|
* 'label' => 'My Addon',
|
|
* 'icon' => 'puzzle',
|
|
* 'items' => [
|
|
* [
|
|
* 'slug' => 'my-addon/getting-started',
|
|
* 'title' => 'Getting Started',
|
|
* 'file' => __DIR__ . '/docs/getting-started.md',
|
|
* ],
|
|
* ],
|
|
* ];
|
|
* return $docs;
|
|
* });
|
|
*/
|
|
return apply_filters('woonoow_docs_registry', $docs);
|
|
}
|
|
|
|
/**
|
|
* Get a single documentation item by slug
|
|
*
|
|
* @param string $slug Document slug
|
|
* @return array|null Document data with content, or null if not found
|
|
*/
|
|
function get_doc_by_slug($slug) {
|
|
$registry = get_docs_registry();
|
|
|
|
foreach ($registry as $section) {
|
|
foreach ($section['items'] as $item) {
|
|
if ($item['slug'] === $slug) {
|
|
// Read file content
|
|
if (file_exists($item['file'])) {
|
|
$item['content'] = file_get_contents($item['file']);
|
|
} else {
|
|
$item['content'] = '# Document Not Found\n\nThis document is coming soon.';
|
|
}
|
|
return $item;
|
|
}
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|