89 lines
2.3 KiB
PHP
89 lines
2.3 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' => 'Help & Support',
|
|
'icon' => 'book-open',
|
|
'items' => [
|
|
[
|
|
'slug' => 'getting-started',
|
|
'title' => 'Official Documentation',
|
|
'file' => $docs_dir . '/getting-started.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;
|
|
}
|