Giao Diện Dòng Lệnh (CLI)

Jankx cung cấp một hệ thống CLI mạnh mẽ và linh hoạt qua WP-CLI để quản lý dữ liệu demo, cache, configuration và theo dõi sức khỏe hệ thống.

1. Quản Lý Hệ Thống (wp jankx system)

Nhóm lệnh này dùng để kiểm tra cấu hình, bảo trì hệ thống và tối ưu hiệu suất chạy theme.

Trạng Thái Hệ Thống

wp jankx system status
wp jankx system health

Kiểm tra hệ thống xem PHP, WordPress đã đúng phiên bản tối thiểu chưa, memory limit có đạt mức tối ưu (dưới 80%), thư mục có được cấp quyền Ghi chưa và các components của framework có load đầy đủ hay không.

Tối ưu & Bảo Trì

wp jankx system optimize
wp jankx system maintenance --enable

Lệnh optimize sẽ thực hiện flush rewrite rules, xóa hết object cache và purge transients quá hạn.
Lệnh maintenance dùng để bật chế độ bảo trì trực tiếp trên website nhanh chóng.

2. Seeder Framework (wp jankx seed)

Mô đun giúp sinh hàng loạt dữ liệu mẫu (Seeder) dùng để phát triển theme mà không cần import những file XML cồng kềnh.

Lấy danh sách các bản mẫu sinh:

wp jankx seed list
wp jankx seed list --group=ecommerce

Quy trình Sinh dữ liệu mới:

# Chạy bằng ID/Alias
wp jankx seed run gaming-portal

# Chạy bằng tên Class (Chuẩn Laravel)
wp jankx seed run PetShopSeeder
wp jankx seed run --class=BlogDemoSeeder

# Chạy theo Group hoặc nhiều options
wp jankx seed run --group=blog
wp jankx seed run pet-shop --verbose

Rollback dữ liệu:

wp jankx seed rollback gaming-portal

Lệnh này sẽ tự động xóa sạch những bài viết (Posts) và thư mục (Terms / Categories) mà seeder đó vừa sinh ra vào hệ thống.

3. Import Full Demo Packages (wp jankx demo)

Để import toàn bộ Website (bao gồm Content, Widget, Customizer, Menu và Options), chức năng này tự động đọc folder theo dạng structure demos/manifest.json.

Danh sách các Demo có sẵn:

wp jankx demo list

Thực hiện Import:

wp jankx demo import gaming-portal
wp jankx demo import pet-shop --xml-only
wp jankx demo import blog-magazine --skip-images

Reset mặt bằng Website:

wp jankx demo reset
wp jankx demo reset gaming-portal

4. Mở rộng (Cấu hình Custom Command & Seeder)

Trong thư mục config/cli.php, có thể thiết lập thêm Custom commands và class mới:

// File: config/cli.php
return [
    'commands' => [
        'jankx custom_cmd' => App\Console\Commands\MyCustomCommand::class,
    ],
    'seeders' => [
        App\Console\Seeders\MovieDemoSeeder::class,
    ],
];

5. Hướng Dẫn: Tạo Một Seeder Tuỳ Chỉnh

Để tạo một quy trình sinh dữ liệu riêng cho dự án, bạn tạo một class kế thừa từ AbstractSeeder và thực thi hàm run(). Hãy nhìn vào ví dụ dưới đây:

namespace App\Console\Seeders;

use Jankx\Foundation\Cli\Seeders\AbstractSeeder;

class MovieDemoSeeder extends AbstractSeeder
{
    // Xác định tên alias hệ thống dùng để chạy (vd: wp jankx seed run movie)
    public static function getName(): string { return 'movie'; }

    public static function getDescription(): string { return 'Sinh dữ liệu Phim Demo'; }

    // Số lượng bản ghi sẽ được tạo (Dùng cho --dry-run)
    public function count(): int { return 5; }

    public function run(array $options = []): void
    {
        // Sử dụng helper ensurePost để tránh bị trùng lặp dữ liệu khi chạy nhiều lần
        $this->ensurePost([
            'post_title' => 'The Matrix',
            'post_content' => 'Nội dung bộ phim...',
            'post_type' => 'post',
            'post_status' => 'publish'
        ]);
        
        $this->log('Đã tạo phim thành công!');
    }
}

Để hệ thống nhận diện class này, hãy khai báo class vào thẻ 'seeders' bên trong config/cli.php.

6. Hướng Dẫn: Tạo Một Package Demo Mới

Một tính năng tuyệt vời của Jankx là tự cấu hình Demo. Hãy làm theo các bước sau để publish demo mới:

  1. Vào Admin UI xuất toàn bộ Setting thành file `xml`, `widgets.json`, `customizer.json`...
  2. Tạo một thư mục mới trong demo/ (Ví dụ: demo/my-store).
  3. Di chuyển các file JSON/XML bạn đã trích xuất vào thư mục đó.
  4. Cập nhật file demo/manifest.json để đăng ký package của bạn.

Ví dụ cấu trúc demo/manifest.json:

{
  "my-store": {
    "name": "My Store Demo",
    "description": "Bản mẫu web bán hàng",
    "version": "1.0.0",
    "files": {
      "content": "content.xml",           // Nội dung Posts, Pages, Images
      "widgets": "widgets.json",          // Layout Sidebar
      "customizer": "customizer.json",    // Cấu hình Theme Mods
      "options": "options.json"           // Các Site Options cơ bản
    }
  }
}

Xong! Giờ đây bạn đã có thể gọi lệnh wp jankx demo import my-store để cài đặt tự động.


Made with ❤️ by Jankx Team