1. Copy Prompt bên dưới:
/*
Brand: wpshare247.com
Author: leav
Type: Prompt Normal
Ver: 1.4
Agents: ChatGPT
*/
================================================
Hãy tạo một plugin WordPress hoàn chỉnh có tên **Tự đặt tên bắt đầu bằng Wpshare247** với các chức năng sau, tuân thủ kiến trúc hướng đối tượng, có mô tả chuẩn PHPDoc và PluginDoc, và đóng gói thành file zip theo tên plugin. Với vai trò là một chuyên gia lập trình WordPress, hãy tự đề xuất một cấu trúc thư mục chuẩn hóa và tối ưu để quản lý code của plugin này một cách hiệu quả.
### **Tên Plugin:** Tự đặt tên bắt đầu bằng Wpshare247
================================================
### **Mô tả Plugin:**
- Có icon thích ( bàn tay ) và icon không thích (Bàn tay ngược) ở cuối nội dung bài viết hoặc trên tùy theo cấu hình tùy chọn trong admin. Khi nhấp vào thích sẽ tăng lên 1, khi nhấp vào không thích cũng tăng lên một, số thích và không thích nằm bên cạnh icon.
- Không cần đăng nhập cũng tương tác được
### **Chức năng chính:**
* Thống kê tổng số lượt thích và không thích trong trang chi tiết 1 bài viết
### **Trang quản trị Plugin:**
* Thêm một **submenu** trong mục "Settings" của WordPress Admin với tên **Wpshare247 Like-Unlike**.
* Trang cài đặt (setting) của plugin bao gồm các trường sau (có thể tùy chỉnh):
* Vị trí xuất hiện box Like: Dropdown select (Ở dưới mặc định - Ở trên)
* Nếu chọn ở dưới thì box sẽ xuất hiện dưới cùng nội dung bài viết, ngược lại nếu chọn ở trên thì hiển thị ở đầu nội dung bài viết
* Giá trị mặc định là: Ở dưới
================================================
### **Chú ý tới thiết kế giao diện (UI/UX Designer)**
Phần giao diện của plugin cần được thiết kế theo các nguyên tắc UX/UI cơ bản nhằm đảm bảo trải nghiệm người dùng tốt và dễ sử dụng trong môi trường WordPress Admin.
Cần chú ý các nhóm thiết kế giao diện sau:
* **Layout System (Bố cục giao diện):**
- Bố cục rõ ràng, logic, dễ hiểu
- Phân chia khu vực nội dung hợp lý
- Phù hợp với layout chuẩn của WordPress Admin
* **Spacing System (Khoảng cách giao diện):**
- Sử dụng spacing hợp lý giữa các thành phần
- Đảm bảo giao diện thông thoáng, dễ đọc
- Áp dụng spacing scale nhất quán (ví dụ 4px, 8px, 16px, 24px, 32px…)
* **Typography System (Hệ thống chữ):**
- Font chữ rõ ràng, dễ đọc
- Sử dụng hierarchy hợp lý cho tiêu đề, nội dung, mô tả
- Phù hợp với typography của WordPress Admin
* **Color System (Hệ thống màu):**
- Sử dụng màu sắc hợp lý cho icon thích / không thích
- Có sự phân biệt rõ ràng giữa trạng thái
- Không phá vỡ hệ màu mặc định của WordPress
* **Component UI (Thành phần giao diện):**
- Sử dụng các thành phần UI chuẩn như button, icon, dropdown
- Các thành phần cần nhất quán và dễ hiểu
* **State UI (Trạng thái giao diện):**
- Thiết kế rõ các trạng thái như:
- default
- hover
- active
- disabled (nếu có)
- Khi người dùng nhấp thích hoặc không thích cần có phản hồi trực quan rõ ràng
* **Responsive Design:**
- Giao diện cần hiển thị tốt trên desktop, tablet và mobile
- Không làm vỡ layout khi màn hình thay đổi kích thước
================================================
### **Yêu cầu plugin:**
* prefix dữ liệu, class, tên file tạo theo tên plugin
### **Yêu cầu kỹ thuật:**
* Viết bằng ngôn ngữ PHP
* **Tương thích WordPress:** Phiên bản hiện tại trở lên
* **Yêu cầu PHP:** Phiên bản 8.0 trở lên
* Sử dụng WordPress Coding Standards để đảm bảo tính nhất quán và bảo mật của code
* Plugin cần được thiết kế để có hiệu suất tốt, tránh gây tải lớn cho server khi có nhiều lượt truy cập
* Có biện pháp kiểm tra và xử lý các trường hợp không có hình ảnh hoặc không có từ khóa nào được cung cấp
* (Gợi ý nâng cao): Cân nhắc thêm tùy chọn để người dùng có thể tùy chỉnh mẫu (template) cho thuộc tính `alt` (ví dụ: `[tên_website] - [từ_khóa]`)
================================================
### **Tuân thủ WordPress:**
**Bảo mật:**
* **Data Sanitization:** Luôn luôn làm sạch (sanitize) dữ liệu đầu vào từ người dùng (ví dụ: form, URL parameters) trước khi sử dụng trong truy vấn cơ sở dữ liệu hoặc hiển thị trên trang web. Sử dụng các hàm của WordPress như sanitize_text_field(), sanitize_email(), absint(), esc_url_raw(), v.v.
* **Output Escaping:** Luôn luôn thoát (escape) dữ liệu trước khi hiển thị nó ra trình duyệt để ngăn chặn các lỗ hổng XSS (Cross-Site Scripting). Sử dụng các hàm của WordPress như esc_html(), esc_attr(), esc_url(), wp_kses_post(), v.v.
* **Nonce:** Sử dụng nonces (number used once) để bảo vệ các hành động quan trọng (ví dụ: lưu cài đặt, xử lý form) khỏi các tấn công CSRF (Cross-Site Request Forgery).
* **SQL Injection Prevention:** Sử dụng $wpdb->prepare() để xây dựng các truy vấn cơ sở dữ liệu một cách an toàn, tránh SQL injection.
* **Direct File Access Prevention:** Ngăn chặn truy cập trực tiếp vào các file PHP của plugin bằng cách thêm đoạn code kiểm tra ABSPATH vào đầu mỗi file.
* **Internationalization (i18n) and Localization (l10n):** Chuẩn bị plugin cho việc dịch sang các ngôn ngữ khác bằng cách sử dụng các hàm __(), _e(), _n(), _x(), esc_html__(), esc_attr__(), v.v. Cung cấp file .pot cho phép dịch.
* **Hooks (Actions and Filters):** Tận dụng hệ thống hooks của WordPress để tương tác với core và các plugin/theme khác một cách linh hoạt và không can thiệp trực tiếp vào code của chúng.
================================================
### **Cấu trúc thư mục:**
Hãy tạo các file và thư mục cần thiết cho một plugin WordPress tiêu chuẩn, bao gồm:
plugin-name/
├── plugin-name.php (file chính)
├── admin/ (các file giao diện admin)
├── includes/ (xử lý logic)
├── assets/ (css/js nếu cần)
├── languages/
├── readme.txt (Viết đầy đủ chuẩn Plugin Readme File)
├── license.txt (Viết đầy đủ chuẩn Plugin license File)
└── uninstall.php (Xóa tất cả option khi xóa plugin)
Với vai trò là một chuyên gia phát triển plugin WordPress, hãy tự đề xuất một cấu trúc thư mục logic và chuẩn hóa để quản lý các file code của plugin (ví dụ: file plugin chính, các class xử lý logic, file quản lý admin, file ngôn ngữ, các assets tĩnh nếu có, v.v.). Hãy giải thích ngắn gọn lý do bạn chọn cấu trúc này.
================================================
### **Tài liệu hóa:**
* Sử dụng PHPDoc đầy đủ cho tất cả file, class, method, function (mô tả, tham số, giá trị trả về)
* File plugin chính theo tên plugin có header PluginDoc tiêu chuẩn
================================================
QUAN TRỌNG:
File plugin chính phải bao gồm đầy đủ các trường: Plugin Name, Plugin URI, Description, Version, Author, Author URI, Requires PHP, Requires at least, Text Domain, Domain Path; Đảm bảo tuân thủ hoàn toàn quy ước metadata plugin của WordPress và không gây lỗi khi kích hoạt plugin.
Không được có bất kỳ dòng trống hoặc ký tự nào trước <?php
File php phải bắt đầu ngay lập tức bằng <?php ở dòng đầu tiên
================================================
### **Đầu ra:**
Cung cấp code PHP hoàn chỉnh cho tất cả các file theo cấu trúc thư mục bạn đã đề xuất, đảm bảo tuân thủ các yêu cầu về hướng đối tượng, tài liệu hóa và đóng gói thành file zip theo tên plugin.
Hãy cung cấp code PHP hoàn chỉnh cho plugin này, bao gồm cả phần backend (trang quản trị) và frontend.
Đảm bảo code được comment rõ ràng để dễ hiểu và bảo trì.
Luôn luôn đóng gói và xuất thành file zip để tải về.
Không viết code trực tiếp và không giải thích gì thêm.
2. Dán Prompt vào ChatGPT
Chờ AI trả về kết quả rồi cài vào WordPress.