WordPress · 6 phút đọc · 2026-09-17
WordPress AI: lõi 7.1, Abilities API và kiểm tra khi chưa có khoá
WordPress AI có thể hiện diện trên giao diện nhưng vẫn chưa gọi được mô hình nào nếu chưa có khoá, provider hoặc model phù hợp. Các bước kiểm tra dưới đây tách rõ khả năng có mặt, quyền gọi và lỗi thiếu model.

WordPress AI không còn chỉ là chuyện của plugin bên ngoài. Trong WordPress 7.1, bản mình đo, lõi WordPress có sẵn ba mảnh để làm việc với AI. Nhưng lõi không tự viết bài, cũng không tự gọi mô hình nào. Bài này mở từng mảnh ra trên một site thử WordPress 7.1 để thấy nó làm được gì, và dừng ở đâu khi chưa có khoá API.
Mình không nhập khoá của nhà cung cấp nào, nên trong suốt bài không có lời gọi AI nào tốn tiền. Mọi kết quả dưới đây là đầu ra thật của WP-CLI 2.12 trên site thử.
WordPress AI là gì trong lõi 7.1
Trong thư mục wp-includes của WordPress 7.1 có ba phần liên quan tới AI:
- Abilities API: cách mô tả chuẩn "WordPress làm được việc gì" để công cụ khác, kể cả AI, gọi tới. Hàm chính:
wp_register_ability,wp_get_abilities,wp_get_ability. - AI Client: một lớp gọi mô hình AI dùng chung, bắt đầu từ hàm
wp_ai_client_prompt(). - Connectors: nơi lưu khoá API dùng chung cho mọi plugin, có trang riêng trong wp-admin.
Ba phần này là hạ tầng. Tính năng mà người viết bài dùng trực tiếp, như tạo tiêu đề hay alt text, nằm ở plugin AI riêng.
WordPress Abilities API: ba việc có sẵn
Liệt kê các ability đang đăng ký:
wp eval 'foreach ( wp_get_abilities() as $name => $a ) { echo $name, " | ", $a->get_label(), "\n"; }'Site thử cho ra đúng 3 ability:
core/get-site-info: Lấy thông tin trang web.core/get-user-info: Lấy thông tin người dùng.core/get-environment-info: Lấy thông tin về môi trường.
Chạy thử một ability bằng tài khoản quản trị (thay demo bằng tên đăng nhập của bạn):
wp eval 'echo wp_json_encode( wp_get_ability( "core/get-site-info" )->execute(), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT );' --user=demoKết quả trả về tên site, mô tả, URL, admin_email, bảng mã UTF-8, ngôn ngữ vi và phiên bản 7.1.
Hai ability còn lại, chạy cùng cách:
core/get-user-infotrả mã người dùng, tên hiển thị, tên đăng nhập (user_login), vai tròadministrator, ngôn ngữ, và URL hồ sơ. Ability này nhận tham sốfieldsđể chỉ lấy những trường cần, ví dụ chỉdisplay_namevàlocale.core/get-environment-infotrả môi trườnglocal, phiên bản PHP8.3.30, máy chủ cơ sở dữ liệu8.4.3và phiên bản WordPress7.1.
Để ý: kết quả có cả email quản trị lẫn tên đăng nhập. Vì vậy quyền là chỗ quan trọng, và mình đo hai cách gọi không đăng nhập:
- Chạy ability đó mà không có
--user→ lỗiability_invalid_permissions: "Khả năng "core/get-site-info" không có quyền cần thiết." - Gọi REST
GET /wp-json/wp-abilities/v1/abilitieskhông đăng nhập → 401 với mãrest_forbidden.
curl -s -o /dev/null -w "%{http_code}\n" https://ten-mien-cua-ban/wp-json/wp-abilities/v1/abilitiesĐã đúng khi lệnh trên in ra 401. Nếu site của bạn trả 200 cho người chưa đăng nhập, hãy xem plugin nào đã mở quyền đó ra.
WordPress AI Client: khi chưa có khoá thì trả lời gì
Hàm wp_ai_client_prompt() nhận câu lệnh và trả về một bộ dựng. Mình hỏi nó có tạo được văn bản không:
wp eval 'var_export( wp_ai_client_prompt( "Xin chào" )->is_supported_for_text_generation() );'Kết quả: false. Gọi thẳng generate_text() thì nhận lỗi prompt_invalid_argument với nội dung "No models found that support text_generation for this prompt."
Nghĩa là: lõi có sẵn đường gọi AI, nhưng chưa có nhà cung cấp và khoá thì không có mô hình nào để gọi, và không có lời gọi mạng nào tốn tiền. Bộ dựng còn có using_abilities(), là chỗ để cho mô hình được dùng các ability ở phần trên khi đã có nhà cung cấp.
WordPress Connectors: trang lưu khoá dùng chung
Vào Cài đặt → Connectors. Bản tiếng Việt ghi tiêu đề "Kết nối":

Trên site thử có 4 connector: Anthropic, Google, OpenAI (loại nhà cung cấp AI) và Akismet (loại chống thư rác). Mỗi nhà cung cấp AI là một plugin riêng: ai-provider-for-anthropic, ai-provider-for-google, ai-provider-for-openai. Nút "Cài đặt" trên thẻ là để cài plugin đó.
WordPress AI API key: WordPress tìm khoá ở đâu
Mã nguồn connectors.php của WordPress 7.1 tìm khoá theo đúng thứ tự:
- Biến môi trường trên máy chủ.
- Hằng số PHP, ví dụ đặt trong
wp-config.php. - Cơ sở dữ liệu, trong tuỳ chọn tên
connectors_ai_{id}_api_key.
Tên biến môi trường và hằng số giống nhau, theo quy ước id viết hoa cộng _API_KEY: OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY. Đặt bằng hằng số trông như sau:
define( 'OPENAI_API_KEY', 'khoa-cua-ban' );Vì sao thứ tự này đáng để ý: khoá nhập qua trang Kết nối nằm trong bảng tuỳ chọn của cơ sở dữ liệu. Ở bài Khôi phục website WordPress, bản sao lưu cơ sở dữ liệu xuất bằng wp db export chứa toàn bộ các bảng, kể cả bảng tuỳ chọn. Tức là ai giữ tệp sao lưu cũng giữ luôn khoá. Đặt khoá bằng biến môi trường hoặc hằng số thì khoá không nằm trong tệp đó.
Khi hiển thị khoá, WordPress che bớt: tối đa 16 dấu chấm tròn, chỉ hiện 4 ký tự cuối.
Kiểm nhanh site của bạn đã có WordPress AI trong lõi chưa
Chạy bốn lệnh sau trong thư mục gốc của site. Kết quả trong ngoặc là của site thử:
- Phiên bản WordPress (site thử in ra
7.1):
wp core version- Ba tệp lõi có mặt không (site thử in đủ
abilities-api.php,ai-client.php,connectors.php):
ls wp-includes | grep -E "^(abilities-api|ai-client|connectors)\.php$"- Có bao nhiêu ability (site thử in ra
3):
wp eval 'echo count( wp_get_abilities() ), "\n";'- Có những connector nào (site thử in ra
anthropic,google,openai,akismet):
wp eval 'foreach ( wp_get_connectors() as $id => $c ) { echo $id, "\n"; }'Nếu lệnh thứ hai không in ra gì, site của bạn chưa có các phần này trong lõi, và các lệnh sau sẽ báo hàm không tồn tại. Số ability và danh sách connector có thể nhiều hơn site thử nếu bạn đã cài plugin đăng ký thêm.
WordPress AI có tự viết bài không
Không, ít nhất là với lõi 7.1 trên site thử. Lõi chỉ có hạ tầng: ability, bộ gọi AI, và nơi lưu khoá. Muốn có nút tạo tiêu đề, alt text, đoạn trích trong trình soạn thảo, cần plugin AI chính thức cùng một plugin nhà cung cấp, rồi nhập khoá. Phần đó mình đã cài và đo ở bài riêng về plugin AI cho WordPress.
Những gì mình chưa kiểm
- Chưa nhập khoá, chưa gọi mô hình thật, nên không có số về chất lượng, tốc độ hay chi phí.
- Chưa thử cho công cụ AI bên ngoài gọi ability qua REST khi đã đăng nhập.
- Chưa kiểm WordPress bản cũ hơn 7.0.
Nếu bạn đang chuẩn bị bật AI cho site thật, làm các bước kiểm tra an toàn ở bài Website WordPress bị hack trước. Một khoá API lộ ra là một khoản tiền có thể bị người khác tiêu.
- Tác giả
- Quản trị viên
- Đăng ngày
- 2026-09-17
- Cập nhật
- 2026-09-17
- Thời gian đọc
- 6 phút đọc
- Tất cả bài viết