PHPackages                             jankx/option-adapter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. jankx/option-adapter

ActiveLibrary[Framework](/categories/framework)

jankx/option-adapter
====================

Jankx option adapter for Jankx Framework, it integrate with your loved option frameworks

01.0k↑3130%2PHP

Since Jun 1Pushed 3w agoCompare

[ Source](https://github.com/jankx/option-adapter)[ Packagist](https://packagist.org/packages/jankx/option-adapter)[ RSS](/packages/jankx-option-adapter/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (2)

Jankx Option Adapter
====================

[](#jankx-option-adapter)

Một package framework-agnostic để tích hợp các option frameworks khác nhau vào WordPress themes.

Tổng quan
---------

[](#tổng-quan)

Option Adapter cung cấp một interface thống nhất để làm việc với các option frameworks khác nhau (Redux, Kirki, WordPress Settings API, Customizer) mà không cần hardcode framework-specific logic vào theme.

Kiến trúc
---------

[](#kiến-trúc)

 ```
graph TD
    A[Theme] --> B[Option Adapter]
    B --> C[Framework Detection]
    C --> D[Adapter Selection]
    D --> E[Redux Adapter]
    D --> F[Kirki Adapter]
    D --> G[WordPress Settings API Adapter]
    D --> H[Customizer Adapter]
    D --> I[Jankx Dashboard Adapter]

    E --> J[Redux Transformer]
    F --> K[Kirki Transformer]
    G --> L[WordPress Transformer]
    H --> M[Customizer Transformer]
    I --> N[Native Transformer]

    J --> O[Redux Framework]
    K --> P[Kirki Framework]
    L --> Q[WordPress Settings API]
    M --> R[WordPress Customizer]
    N --> S[Jankx Dashboard]
```

      Loading Cấu trúc thư mục
----------------

[](#cấu-trúc-thư-mục)

```
src/
├── Abstracts/
│   └── Adapter.php              # Interface cho tất cả adapters
├── Frameworks/
│   ├── ReduxFramework.php       # Adapter cho Redux Framework
│   ├── KirkiFramework.php       # Adapter cho Kirki Framework
│   ├── WordPressSettingAPI.php  # Adapter cho WordPress Settings API
│   ├── CustomizeFramework.php   # Adapter cho WordPress Customizer
│   └── JankxOptionFramework.php # Native adapter cho Jankx Dashboard
├── Transformers/
│   ├── ReduxTransformer.php     # Transformer cho Redux
│   ├── KirkiTransformer.php     # Transformer cho Kirki
│   ├── WordPressTransformer.php # Transformer cho WordPress Settings API
│   └── CustomizeTransformer.php # Transformer cho Customizer
├── Repositories/
│   └── ConfigRepository.php     # Repository để load config
├── Specs/
│   ├── Page.php                 # Page specification
│   ├── Section.php              # Section specification
│   └── Field.php                # Field specification
├── Framework.php                # Core framework detection & loading
└── OptionsReader.php            # Reader cho options data

```

Core Components
---------------

[](#core-components)

### 1. Framework.php

[](#1-frameworkphp)

Core class để detect và load option framework phù hợp.

**Methods:**

- `detectFramework()` - Detect framework có sẵn
- `getFrameworkFromConfig()` - Lấy framework từ config
- `setFrameworkFromExternal()` - Set framework từ bên ngoài
- `getAdapter()` - Lấy adapter instance

### 2. OptionsReader.php

[](#2-optionsreaderphp)

Đọc và parse options data từ files.

**Methods:**

- `getPages()` - Lấy danh sách pages
- `getSections($pageTitle)` - Lấy sections của page
- `getFields($sectionTitle)` - Lấy fields của section
- `setOptionsDirectoryPath($path)` - Set path cho options directory

### 3. Adapter Interface

[](#3-adapter-interface)

Interface chung cho tất cả adapters.

**Methods:**

- `createSections($optionsReader)` - Tạo sections cho framework
- `transformIcon($dashicon)` - Transform icon cho framework

Supported Frameworks
--------------------

[](#supported-frameworks)

### 1. Redux Framework

[](#1-redux-framework)

- **Adapter:** `ReduxFramework`
- **Transformer:** `ReduxTransformer`
- **Icon Mapping:** `dashicons` → `elusiveicons`

### 2. Kirki Framework

[](#2-kirki-framework)

- **Adapter:** `KirkiFramework`
- **Transformer:** `KirkiTransformer`
- **Icon Mapping:** `dashicons` (direct)

### 3. WordPress Settings API

[](#3-wordpress-settings-api)

- **Adapter:** `WordPressSettingAPI`
- **Transformer:** `WordPressTransformer`
- **Icon Mapping:** `dashicons` (direct)

### 4. WordPress Customizer

[](#4-wordpress-customizer)

- **Adapter:** `CustomizeFramework`
- **Transformer:** `CustomizeTransformer`
- **Icon Mapping:** `dashicons` (direct)

### 5. Jankx Dashboard (Native)

[](#5-jankx-dashboard-native)

- **Adapter:** `JankxOptionFramework`
- **Transformer:** Native (không cần transformer)
- **Icon Mapping:** `dashicons` (direct)

Usage
-----

[](#usage)

### 1. Basic Usage

[](#1-basic-usage)

```
use Jankx\Adapter\Options\Framework as OptionFramework;

// Initialize framework
$framework = OptionFramework::getInstance();

// Get adapter
$adapter = $framework->getAdapter();

// Create sections
$optionsReader = OptionsReader::getInstance();
$optionsReader->setOptionsDirectoryPath('resources/options');
$adapter->createSections($optionsReader);
```

### 2. Configuration

[](#2-configuration)

```
// Trong config/app.php
'options' => [
    'framework' => 'redux', // hoặc 'kirki', 'wordpress', 'customize', 'jankx'
    'display_name' => 'Theme Options',
    'menu_title' => 'Theme Options',
    'page_slug' => 'theme-options',
    'dev_mode' => true,
],
```

### 3. Options Data Structure

[](#3-options-data-structure)

```
resources/options/
├── pages.php                    # Pages configuration
├── general/                     # Page directory
│   ├── sections.php            # Sections cho page
│   ├── site-information/       # Section directory
│   │   └── fields.php         # Fields cho section
│   └── social-media/           # Section directory
│       └── fields.php         # Fields cho section
└── typography/                 # Page directory
    ├── sections.php
    └── body-typography/
        └── fields.php

```

### 4. Page Configuration (pages.php)

[](#4-page-configuration-pagesphp)

```
return [
    'general' => [
        'title' => 'General Settings',
        'icon' => 'dashicons-admin-generic',
        'priority' => 30,
    ],
    'typography' => [
        'title' => 'Typography',
        'icon' => 'dashicons-editor-textcolor',
        'priority' => 30,
    ],
];
```

### 5. Section Configuration (sections.php)

[](#5-section-configuration-sectionsphp)

```
return [
    'site-information' => [
        'title' => 'Site Information',
        'description' => 'Basic site settings',
    ],
    'social-media' => [
        'title' => 'Social Media',
        'description' => 'Social media links',
    ],
];
```

### 6. Field Configuration (fields.php)

[](#6-field-configuration-fieldsphp)

```
return [
    'site_title' => [
        'type' => 'text',
        'title' => 'Site Title',
        'subtitle' => 'Main site title',
        'description' => 'Enter your site title',
        'default' => 'Bookix - Book Store',
    ],
    'site_logo' => [
        'type' => 'image',
        'title' => 'Site Logo',
        'subtitle' => 'Upload logo',
        'description' => 'Upload your site logo',
    ],
];
```

Field Types Support
-------------------

[](#field-types-support)

### Basic Fields

[](#basic-fields)

- `text` - Text input
- `textarea` - Textarea
- `image` - Media upload
- `color` - Color picker
- `select` - Select dropdown
- `radio` - Radio buttons
- `checkbox` - Checkbox
- `switch` - Toggle switch

### Advanced Fields

[](#advanced-fields)

- `slider` - Range slider
- `typography` - Typography settings
- `background` - Background settings
- `spacing` - Spacing controls
- `image_select` - Image select
- `gallery` - Gallery upload
- `repeater` - Repeater field
- `sorter` - Sortable list

Icon Transformation
-------------------

[](#icon-transformation)

Mỗi framework có cách xử lý icons khác nhau:

### Redux Framework

[](#redux-framework)

```
// dashicons → elusiveicons
'dashicons-admin-generic' => 'el el-cog'
'dashicons-editor-textcolor' => 'el el-font'
'dashicons-art' => 'el el-picture'
```

### Other Frameworks

[](#other-frameworks)

```
// Sử dụng dashicons trực tiếp
'dashicons-admin-generic' => 'dashicons-admin-generic'
```

Child Theme Support
-------------------

[](#child-theme-support)

Option Adapter tự động hỗ trợ child theme overrides:

1. **Child theme priority** - Đọc từ child theme trước
2. **Parent theme fallback** - Fallback về parent theme
3. **Deep merge** - Merge arrays một cách thông minh

Framework Detection Priority
----------------------------

[](#framework-detection-priority)

1. **External configuration** - `setFrameworkFromExternal()`
2. **Config file** - `Config::get('app.options.framework')`
3. **WordPress options** - Database stored preference
4. **Auto detection** - Detect available frameworks

Error Handling
--------------

[](#error-handling)

- **Graceful degradation** - Fallback khi framework không có sẵn
- **Debug logging** - Log chi tiết cho development
- **Exception handling** - Catch và handle exceptions

Performance
-----------

[](#performance)

- **Lazy loading** - Chỉ load khi cần
- **Caching** - Cache configuration và data
- **Memory efficient** - Tối ưu memory usage

Development
-----------

[](#development)

### Adding New Framework

[](#adding-new-framework)

1. **Create Adapter:**

```
class NewFrameworkAdapter implements Adapter
{
    public function createSections($optionsReader) { /* ... */ }
    public function transformIcon($dashicon) { /* ... */ }
}
```

2. **Create Transformer:**

```
class NewFrameworkTransformer
{
    public static function transformPage($page) { /* ... */ }
    public static function transformField($field) { /* ... */ }
}
```

3. **Register in Framework:**

```
// Trong Framework.php
protected $supportedFrameworks = [
    'newframework' => NewFrameworkAdapter::class,
];
```

### Testing

[](#testing)

```
// Test framework detection
$framework = OptionFramework::getInstance();
$adapter = $framework->getAdapter();
assert($adapter instanceof ExpectedAdapter);

// Test icon transformation
$icon = $adapter->transformIcon('dashicons-admin-generic');
assert($icon === 'expected-icon');
```

License
-------

[](#license)

MIT License - Xem file LICENSE để biết thêm chi tiết.

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance62

Regular maintenance activity

Popularity20

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/6a609a3b3a36dee9f36ef6f8d3b2b2dc91eebefc7644031e829e65bca4329799?d=identicon)[puleeno](/maintainers/puleeno)

---

Top Contributors

[![puleeno](https://avatars.githubusercontent.com/u/22538657?v=4)](https://github.com/puleeno "puleeno (92 commits)")

### Embed Badge

![Health badge](/badges/jankx-option-adapter/health.svg)

```
[![Health](https://phpackages.com/badges/jankx-option-adapter/health.svg)](https://phpackages.com/packages/jankx-option-adapter)
```

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k104.3M829](/packages/laravel-socialite)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k38.6M289](/packages/laravel-dusk)[pinguo/php-msf

Pinguo Micro Service Framework For PHP

1.7k4.2k](/packages/pinguo-php-msf)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)[link-cloud/fast-hyperf

LinkCloud Fast Hyperf

241.2k1](/packages/link-cloud-fast-hyperf)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
