4. Các thành phần của WordPress
Ở các bài trước, bạn đã tìm hiểu và làm được một số nội dung sau:
- Hiểu được web server để làm gì
- Làm sao tạo ra được một web server trên máy cục bộ
- Trên web server (Apache) tạo được thư mục cho dự án web
- Tải được mã nguồn của WordPress từ mạng về máy cục bộ
- Chép toàn bộ mã nguồn của WordPress vào thư mục dự án (website)
- Tạo cơ sở dữ liệu mới cho website
- Cấu hình để kết nối chương trình WordPress vào cơ sở dữ liệu vừa tạo
- Tạo được tài khoản để đăng nhập vào chương trình WordPress, nhằm cấu hình và tạo website sau này
- Khởi chạy được chương trình WordPress, từ chương trình này sẽ cấu hình và tạo website
Trước khi có thể sử dụng WordPress để tạo ra website, chúng ta cùng tìm hiểu về cách thành phần, cơ chế làm việc của WordPress
4.1 Các thành phần quan trọng của WordPress
Mã nguồn WordPress được chia thành 3 thành phần chính, lưu trữ trong thư mục dự án của bạn (ví dụ trong congtyteo):
[1] Các tập tin cấu hình (root files). Đây là các tập tin quan trọng nằm ở thư mục gốc của dự án:
- wp-config.php: Tập tin cấu hình chính. Chứa các thiết lập quan trọng như thông tin kết nối cơ sở dữ liệu (database credentials), các khóa bảo mật (security keys), và các tùy chọn nâng cao khác
Bạn hãy mở wp-config.php bằng một trình soạn mã nguồn (ví dụ: VS Code) để quan sát nội dung bên trong. Bạn sẽ thấy các thông tin kết nối tới cơ sở dữ liệu mà bạn đã khai báo.
[wp-config.php]
…
define( 'DB_NAME', 'wp_congtyteo' );
/** Database username */
define( 'DB_USER', 'root' );
/** Database password */
define( 'DB_PASSWORD', '' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
…
- index.php: Tập tin chịu trách nhiệm khởi động toàn bộ WordPress. Mọi yêu cầu truy cập website đều đi qua tập tin này. Hiện tại, tập tin index.php chưa có thông tin gì đáng kể.
[index.php]
…
define( 'WP_USE_THEMES', true );
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
…
[2] Các thư mục chính
- wp-admin/: Chứa tất cả các tập tin cần thiết để tạo ra Bảng điều khiển (Dashboard) quản trị. Đây là giao diện bạn dùng để viết bài, cài đặt plugin và quản lý website
- wp-includes/: Chứa các tập tin framework, thư viện và chức năng cần thiết để WordPress hoạt động, ví dụ: các hàm xử lý dữ liệu, giao diện, truy vấn
[3] Thư mục chứa nội dung và thành phần mở rộng
Đây là thư mục chứa tất cả nội dung và các yếu tố mở rộng do người dùng cài đặt:
- wp-content/themes/: Chứa tất cả các Giao diện (themes) đã cài đặt. Theme quyết định giao diện và bố cục trình bày của website
- wp-content/plugins/: Chứa tất cả các Phần bổ trợ (plugins). Plugins thêm các chức năng mới (ví dụ: thương mại điện tử, SEO, bảo mật) mà mã nguồn lõi không có
- wp-content/uploads/: Chứa tất cả các tin đa phương tiện (hình ảnh, video, tài liệu) mà bạn tải lên
Như đã biết, cái dở của WordPress là kích thước của dự án khá lớn, mặc dù bạn chưa tạo ra bất kỳ trang web nào mới cho dự án. Bạn có thể vào File Explorer, xem thử kích thước của thư mục dự án là bao nhiêu? (71MB?).
4.2 Cơ chế hoạt động của WordPress
Do WordPress là một ứng dụng web, nên nó hoạt động theo mô hình client-server. Với mô hình client-server, các hoạt động chính bao gồm: gửi yêu cầu, nhận yêu cầu, xử lý yêu cầu, truy cập cơ sở dữ liệu, kết xuất giao diện, trả về kết quả, và hiển thị. Các hoạt động này sẽ diễn ra ở cả máy người dùng (trình duyệt web) và máy web server.
Các hoạt động được mô tả chi tiết hơn ở bảng sau:
Để dễ hiểu hơn, chúng ta cùng nhìn lại quá trình chúng ta tạo ra website cho công ty có tên là congtyteo.
- Tạo thư mục dự án có tên là congtyteo trong web server Apache, cụ thể là trong thư mục XAMPP\htdocs
- Nhúng toàn bộ mã nguồn của WordPress vào trong thư mục dự án congtyteo
- Tạo ra một cơ sở dữ liệu cho website có tên là db_congtyteo
Khi đó, nếu có người dùng truy cập website của bạn, ví dụ, khi bạn nhập đường dẫn sau vào cửa sổ trình duyệt: http://localhost/congtyteo và bấm phím Enter. Quá trình hoạt động của một website dựa trên WordPress sẽ diễn ra như sau:
[1] Apache nhận yêu cầu, chạy index.php
[2] PHP kết nối MySQL (db_congtyteo) bằng thông tin trong wp-config.php
[3] PHP truy vấn MySQL: "Hãy cho tôi nội dung trang chủ."
[4] MySQL trả về dữ liệu văn bản, đường dẫn ảnh, và các tùy chọn
[5] PHP kết hợp dữ liệu này với mã HTML/CSS/JS của Theme (từ wp-content/themes), rồi gửi về trình duyệt
[6] Trình duyệt nhận kết quả trả về của web server, và hiển thị trang web congtyteo cho người dùng
Cơ chế tổ chức của dữ liệu (cơ sở dữ liệu) trong WordPress được tổ chức như sau:
4.3 Bài tập và câu hỏi
Bài tập 4a. Bạn hãy mở tập tin wp_config.php, đọc và cho biết các thông tin sau:
- Tên (hay địa chỉ) của máy chủ cơ sở dữ liệu (hostname của database server)
- Tên của cơ sở dữ liệu WordPress sẽ kết nối vào
- Khi kết nối vào cơ sở dữ liệu thì dùng tài khoản: Tên đăng nhập (username) và mật khẩu (password) là gì
Bài tập 4b. Bạn hãy mở bảng wp_options trong cơ sở dữ liệu của dự án (ví dụ db_congtyteo), và cho biết các thông tin sau:
- URL của website (siteurl):
- Trang chủ mặc định của website (home):
- Tiêu đề của website (title):
- Email của admin (admin_email):
Bài tập 4c. Hãy mở bảng wp_posts trong cơ sở dữ liệu của dự án (ví dụ: db_congtyteo), và cho biết các thông tin sau:
- Tổng cộng có bao nhiêu bài viết (post) trên website:
- Bao nhiêu bài viết ở trạng thái xuất bản (published):
- Bao nhiêu bài viết ở trạng thái bản nháp (chưa xuất bản) (draft):
- Bao nhiêu bài viết cho bình luận (comment):
Câu hỏi 1. Để có thể khởi chạy một website dựa trên WordPress, cần thực hiện các việc sau, phát biểu nào không đúng?
A. Chép toàn bộ mã nguồn của WordPress vào thư mục dự án
B. Tạo một cơ sở dữ liệu rỗng trong MySQL
C. Dùng trình duyệt, truy cập vào thư mục gốc của dự án, để thực hiện các khai báo về cơ sở dữ liệu và tài khoản truy cập trang admin của WordPress
D. Tạo các bảng trong cơ sở dữ liệu MySQL
Câu hỏi 2. Mô hình hoạt động của một website dựa trên WordPress diễn ra như sau, phát biểu nào không đúng?
A. Trình duyệt gửi trả lời (response) về cho web server
B. Web server tiếp nhận, xử lý và trả về kết quả cho trình duyệt web
C. Web server đọc và ghi dữ liệu vào cơ sở dữ liệu
D. Trình duyệt nhận kết quả trả về của web server và hiển thị lên giao diện