Tìm hiểu WordPress Phần 1: Cài đặt, cách vận hành của mã nguồn.
Lời nói đầu Ngày nay mọi hoạt động kinh doanh, giải trí, xã hội của con người đều gắn liền với internet. Đã nhắc đến internet thì không thể không nhắc đến các website, chúng được coi là các đích mà người dùng sẽ đến mỗi khi vào internet. Các website dù đơn giản hay phức tạp đều có công nghệ phía ...
Lời nói đầu
Ngày nay mọi hoạt động kinh doanh, giải trí, xã hội của con người đều gắn liền với internet. Đã nhắc đến internet thì không thể không nhắc đến các website, chúng được coi là các đích mà người dùng sẽ đến mỗi khi vào internet. Các website dù đơn giản hay phức tạp đều có công nghệ phía sau nó. Bạn có thể xây dựng các website đơn thuần chỉ bằng các ngôn ngữ lập trình web, hoặc có thể sử dụng các framework đã có sẵn giúp việc lập trình đơn giản hơn. Và còn một cách khác giúp những người không chuyên hoặc không biết nhiều về lập trình web có thể tạo ra các websites đó là sử dụng các CMS (Content Management System – hệ quản trị nội dung). Có rất nhiều CMS đang được sử dụng hiện nay trong đó nổi bật nhất là WordPress.
WordPress là gì?
WordPress là một phần mềm CMS mã nguồn mở được viết bởi ngôn ngữ PHP và sử dụng hệ quản trị cơ sở dữ liệu MySQL. WordPress giúp chúng ta tạo được các website như: blog cá nhân, trang tin tức, trang thương mại điện tử… Đặc điểm của WordPress:
- Dễ sử dụng: WordPress sử dụng giao diện đơn giản tương tự như các phần mềm sử dụng để xuất bản nội dung trên máy tính, việc này giúp có những người không có kinh nghiệm lập trình web cũng có thể sử dụng WordPress dễ dàng để xuất bản các nội dụng sau khi cài đặt WordPress.
- Cộng đồng hỗ trợ lớn: một trong những điểm quan trọng khi sử dụng CMS để tạo một website là việc khi bạn gặp khó khăn sẽ có ai đó giúp đỡ hỗ trợ bạn không? WordPress có một cộng đồng những người sử dụng và làm việc với WordPress rất lớn, những người đã kinh qua những khó khăn lớn nhất, họ sẽ hỗ trợ bạn khi gặp khó khăn.
- Nhiều websites cùng lúc(Multisite): WordPress có thể mở rộng ra nhiều website dựa vào nhu cầu của bạn. Tính năng này giúp bạn phát triển và bảo trì nhiều trang web trong khi chỉ sử dụng một cài đặt của WordPress.
- WordPress tự động lưu các nội dung chúng ta đang làm việc vì vậy không sợ bị mất mát khi gặp sự có về máy tính (trừ khi bạn sử dụng trên local).
- Có thể xuất bản nội dụng trên các phương tiện khác nhau: Ngoài phiên bản dành cho máy tính, WordPress còn có phiên bản dành có các thiết bị di động giúp bạn xuất bản nội dung trên các thiết bị di động một cách dễ dàng.
- Bảo mật nội dụng bằng mật khẩu.
- Xem trước bài viết: tính năng giúp ta xem trước, sau đó chỉnh sửa dễ dàng.
- WordPress tổ chức các nội dung ta xuất bản theo ngày, tháng, năm, tác giả, theo loại… giúp ta dễ dàng tìm kiếm nội dung hơn.
- Ngôn ngữ đa dạng: WordPress được dịch sang hơn 60 ngôn ngữ khác nhau.
- Sử dụng URL “đẹp”: WordPress có một vài định dạng URL giúp ta tạo ra các URL dễ hiểu cho người dùng sử dụng websites xây dựng trên nền tang WordPress…
Cài đặt WordPress
Cài đặt WordPress rất đơn giản bạn chỉ cần thực hiện các bước sau:
- Trước hết bạn cần lựa chọn cho mình một host để chứa website. Host này phải hỗ trợ php và mySQL
- Download phiển bản WordPress mới nhất tại trang chủ www.wordpress.org. Tuy nhiên một số host hiện nay có hỗ trợ WordPress rồi vì vậy bạn có thể chọn cài đặt WordPress từ host.
- Nếu host của bạn không hỗ trợ vài đặt WordPress thì giải nén tệp wordpress vừa down load về và upload lên host của bạn thông qua fpt.(Nếu bạn sử dụng localhost thì copy và thư mục root của localhost).
- Sau khi đã upload WordPress lên server chúng ta cần tạo Database và user cho DB WordPress. Ở đây ta sẽ sử dụng phpMyAdmin để tạo DB và User (do các webserver php chủ yếu sử dụng phpMyAdmin)
- Trước hết chúng ta tạo DB với với kiểu mã hóa phù hợp với ngôn ngữ mà bạn cần dùng. Với đa số các loại ngôn ngữ ta sẽ sử dụng utf8_general_ci.
- Sau đó tạo một User mới, user sẽ làm việc với cơ sở dữ liệu WordPress
- Chỉnh sửa quyền của user này cho phép mọi quyền thao tác với cơ sở dữ liệu WordPress.
- Bước tiếp theo cấu hình tệp wp-config.php (lưu ý bước này có thể có hoặc không).
- Vào thư mục WordPress đã upload lên webserver bạn sẽ thấy tệp wp-config-sample.php.
- Copy tệp này và đổi tên thành wp-config.php. Chỉnh sửa tệp này theo các cấu hình sau:
- DB_NAME: tên cơ sở dữ liệu vừa tạo trên.
- DB_USER: tên user của cơ sở dữ liệu vừa tạo ở trên.
- DB_PASSWORD: mật khẩu của db vừa tạo ở trên.
- DB_HOST: host nơi cơ sở dữ liệu được đặt. Thường đi liền với host nơi ta đặt website hoặc localhost với website đặt ở localhost.
- Sau khi lưu thay đổi của tệp wp-config.php ta upload nó trở lại thư mục WordPress trên webserver (đối với localhost ta thay đổi và lưu lại trực tiếp luôn).
- Kết tiếp ta chạy kịch bản cài đặt WordPress.
- Tùy thuộc nơi bạn đặt WordPress sẽ có thể có đường dẫn chạy tệp kịch bản khác nhau. Tuy nhiên đường dẫn sẽ có dạng “host/wp-admin/install.php”:
- Tới bước này nếu bạn đã thực hiện cấu hình wp-config.php thì WordPress sẽ cho bạn thiết lập cài đặt các thông tin cho website WordPress.
- Nếu bạn chưa thực hiện bước cấu hình wp-config.php thì WordPress sẽ cho bạn cấu hình lại với các thông tin tương tự bước trên. Nếu cấu hình đúng WordPress sẽ cho tiến hành cài đặt website.
- Cài đặt website WordPress ta cần điền các thông tin gồm:
- Tên website.
- Tên người dùng quản trị website.
- Mật khẩu.
- Nếu các thông tin hợp lệ thì WordPress sẽ hiển thị thông báo và cho phép chúng ta đăng nhập với username và mật khẩu đã đăng ký.
- Màn hình sau đăng nhập sẽ là trang quản trị của website.
- Ở trang quản trị website cho phép bạn:
- Quản lý bài viết (tạo, xóa, sửa), quản lý các tệp media.
- Cài đặt các giao diện thông qua themes.
- Cài đặt các tính năng cho website thông qua plugins.
- Thiết lập một số tham số cho website.
Mình sẽ đi sau vào các thiết lập này ở các phần sau của bài report.
Cách thức vận hành của mã nguồn WordPress
1. Về cơ sở dữ liệu của WordPress
Với WordPress các bảng của cơ sở dữ liệu mySQL đã được tự động tạo và thiết lập sẵn một vài giá trị khi chúng ta tiến hành cài đặt website ở bước trên. Tất cả các dữ liệu được WordPress lưu vào database gồm: nội dung các bài viết ta tạo ra, các thiết lập tham số cho website. Rồi sau đó, các tính năng trong mã nguồn sẽ tương tác với các bảng dữ liệu đó và đưa ra ngoài trình duyệt hiển thị dưới dạng HTML thông qua các tập tin đã được thiết lập khuôn mẫu trong theme (ta gọi là template).
2. Cách thức hoạt động của WordPress khi ta truy cập vào websites WordPress
Khởi động mã nguồn
Tập tin index.php trong mã nguồn (không phải của theme hay plugin) được tải ra, sau đó nó sẽ truy xuất các tập tin cốt lõi khác như wp-config.php vốn để kết nối đến cơ sở dữ liệu, wp-settings.php,…. Ở bước này, WordPress sẽ kết nối đến cơ sở dữ liệu được thiết lập trong wp-config.php, sau đó sẽ tiến hành tải những tệp chức năng trong mã nguồn như /wp-include/functions.php, /wp-include/options.php,…nhằm nạp sẵn các chức năng cần thiết để có thể tiếp nhận những dữ liệu. Và cũng trong bước này, toàn bộ các dữ liệu được lưu vào bảng wp_options có giá trị ở cột autoload là true sẽ được lôi ra hết, dù thiết lập đó có được sử dụng hay không. Mục đích của bước này là mang sẵn các tuỳ chọn của website cùng các plugin để hỗ trợ cho các bước sau, đặc biệt là bước tải plugin để nó làm việc chính xác
Kích hoạt plugin
Các plugin mà bạn đã kích hoạt trong website sẽ được tải ra ngay sau khi mã nguồn WordPress khởi động xong. Bởi vì các tính năng trong WordPress Core được sử dụng trong plugin thường sẽ được gắn vào hookinit (bạn tạm thời hiểu nó là một điểm neo để kích hoạt kịch bản nào đó) nên nó sẽ load ngay sau khi WordPress khởi động là vậy.
Thực thi tập tin functions.php trong theme
Lúc này, WordPress sẽ tiến hành dò tìm đến tập tin functions.php trong theme mà bạn đang sử dụng cho trang web để tải các tính năng mà người tạo ra theme đã khai báo ở đó. Vậy làm sao WordPress có thể hiểu được website đang dùng theme nào? Đó là ở bước 1, nó đã kết nối vào database và dựa theo khoá current_theme trong cột option_name tại bảng wp_options. WordPress xác định theme hiện tại thông qua database
Phân tích truy vấn và khởi tạo truy vấn
Đây là bước quan trọng để website của bạn có thể hiển thị nội dung ra bên ngoài, vì các nội dung sẽ được trả về sau khi các truy vấn gửi vào database. Ban đầu WordPress sẽ chạy hàm wp() được thiết lập trong /wp-include/functions.php vốn để gọi phương thức wp->main() cho mục đích thiết lập truy vấn. Đối tượng wp được tạo ra bởi lớp WP trong /wp-include/class-wp.php. Lúc này, phương thức $$p->parse_request() sẽ được khởi động cho mục đích phân tích truy vấn dựa theo đường dẫn của website. Quá trình phân tích được thực hiện như sau:
- Từ URL của website phương thức parse_request() sẽ tách các biến của phương thức GET ra khỏi URL.
- Sử dụng các rewrite rules (luật viết url cho trang web) đang được thiết lập bởi website. Các luật này là tập các mẫu cho các permalink của WordPress. Sẽ có một hành động được sinh ra nếu permalink trùng khớp với các luật.
- Duyệt qua các luật rewrite theo thức tự, nếu các permalink khớp với các luật thì WordPress sẽ trích lấy các thông tin của URL dựa vào từng luật cụ thể. Nếu không có luật nào khớp lỗi 404 sẽ được sinh ra.
- Sau khi trích được các biến truy vấn dựa vào các luật rewrite và URL. WordPress sẽ lưu các giá trị đó vào một mảng truy vấn và sử dụng nó để tạo các câu lệnh truy vấn bằng SQL.
WordPress sẽ tự động sinh truy vấn dựa theo đường dẫn, ví dụ khi chúng ta vào http://domain.com/?p=123 thì WordPress sẽ gửi một truy vấn vào database để lấy dữ liệu của post mang số ID là 123. Sau khi truy vấn được phân tích, WordPress sẽ làm việc tiếp theo là thiết lập các hàm điều kiện thông qua phương thức wp_query->parse_query(). Sau đó nó sẽ chuyển các truy vấn đã được tạo ra thành truy vấn bằng các lệnh SQL nhằm gửi đến MySQL để lấy dữ liệu bài viết bằng phương thức wp_query->get_posts(). Nếu database có dữ liệu, các bài viết sẽ được lấy về sau khi gửi truy vấn và nó sẽ được lưu vào đối tượng $$p_query để nó sử dụng trong các vòng lặp cho việc hiển thị bài viết. Trong quá trình gửi truy vấn này, nếu nó không tìm thấy dữ liệu thì sẽ phân tích và hiển thị báo lỗi 404.
Thực thi các tập tin khuôn mẫu (template) trong theme
Sau khi nó đã có dữ liệu bài viết và các dữ liệu liên quan mà nó đã làm ở bước 4, thì nó sẽ tiến hành xử lý các tập tin template của theme thông qua cấu trúc template. Sau đó các nội dung và trang chủ của website sẽ được hiển thị dựa theo các template tags dưới dạng HTML.
3. Vòng lặp lấy ra các bài viết trong WordPress
Như trình bày ở trên khi sử dụng phương thức get_posts() ta sẽ lấy được dữ liệu các bài viết được truy vấn ra theo URL, các dữ lieuj này được lưu vào đối tượng wp_query và ta sẽ sử dụng vòng lặp để lấy ra các bài viết kết quả. Và chúng ta sẽ lặp thông qua phương thức have_posts() trong đối tượng wp_query. Cụ thể đoạn vòng lặp hiển thị các bài viết kết quả như sau:
<?php if( $wp_query->have_posts() ) { while( $wp_query->have_posts() ) { $wp_query->the_post(); echo $post->post_title . '<br>'; } } ?>
Đoạn code trên rất đơn giản nó sử dụng phương thức have_posts() để kiểm tra xem trong kết quả truy vấn trả (được lưu trong đối tượng wp_query) về có bài viết nào hay không. Nếu có ta sử dụng vòng lặp while để lặp qua kết quả trả về. Trong khi lặp ta sử dụng phương thức the_post() để thiết đếm chỉ mục để gọi bài kế tiếp trong vòng lặp, nếu bạn không khai báo phương thức này trong vòng lặp thì bài viết đầu tiên sẽ bị lặp đi lặp lại hoài mà không có điểm dừng. Tiếp đến ta sử dụng các phương thức, thuộc tính của đối tượng post (đối tượng chứa bài viết đang duyệt) để hiển thị các thuộc tính của bài viết, điển hình ở trên là thuộc tính post_title để hiển thị tiêu đề bài viết.
Kết Luận
Trong phần một của bài viết mình muốn giới thiệu qua về WordPress, cách cài đặt và cách thức hoạt động của mã nguồn WordPress. Ở trong phần tiếp theo mình sẽ nói về lập trình với WordPress như: làm việc với Theme, Plugin... Thiết lập các cài đặt cho một trang web WordPress.
Tài Liệu Tham Khảo
- https://codex.wordpress.org
- http://thachpham.com/