Nếu bạn đã yêu thích mã nguồn WordPress và muốn đi sâu hơn về nó, cụ thể là lập trình các tính năng trong WordPress, viết plugin hoặc làm theme thì bạn phải thành thạo rất nhiều kiến thức. Những kiến thức cần thiết để làm web thì mình không nói rồi nhé, nhưng một trong các kiến thức quan trọng nhất để có thể lập trình các tính năng trong mã nguồn WordPress là ngôn ngữ lập trình PHP. Bởi vì WordPress được viết bằng ngôn ngữ PHP để tương tác với cơ sở dữ liệu dùng hệ quản trị MySQL nên bạn muốn “giao tiếp” được với code trong WordPress thì phải biết PHP.
Thực ra mình đã viết xong một serie Học PHP dành cho nhu cầu làm việc trong WordPress, nhưng thật trớ trêu là đến khi viết xong thì đọc lại mình thấy là chuối quá và có khi là bạn sẽ càng khó hiểu PHP thêm. Nên mình quyết định là không đăng serie đó nhưng sẽ viết một bài guide là bài này để hướng dẫn bạn từng bước tìm hiểu PHP để có thể làm việc với WordPress.
PHP là gì và hoạt động ra sao?
PHP là một ngôn ngữ lập trình ứng dụng được thiết kế để phục vụ cho nhu cầu viết các ứng dụng phục vụ trên nền tảng website. Điều đó có nghĩa là chúng ta chỉ sử dụng PHP trong việc lập trình website, và những dữ liệu PHP sẽ được xuất ra dưới dạng HTML để trình duyệt hiển thị.
PHP không thể đơn phương hoạt động được nên nó sẽ cần một trình thông dịch (PHP interpreter) được hiểu như là một module của web server (ví dụ như module mod_php của Apache để thực thi mã PHP) hoặc thông qua một chương trình CGI để có thể thực thi được các mã PHP. Sẵn đây mình nói lái qua một xíu luôn là cái localhost mà bạn sử dụng để cài lên máy tính nhằm chạy được các mã nguồn PHP là một ứng dụng webserver đã được cài mod_php nên bạn mới chạy được các mã PHP đấy.
Nhiệm vụ của PHP là gì?
Trong một trang web, nhiệm vụ của PHP sẽ là xây dựng các kịch bản trong mã nguồn của website để nó thực thi nhằm làm các việc mà bạn không phải làm thủ công. Ví dụ, nó có thể hiển thị thời gian hiện tại trên webserver hoặc một múi giờ nào đó đã được định nghĩa sẵn trong ngôn ngữ PHP ra ngoài website, ví dụ như:
<?php echo ‘Năm nay là ‘ . date(‘Y’); ?>
Mặc dù bây giờ bạn có thể chưa hiểu PHP nhưng bạn có thể mường tượng được là nó liên quan đến việc hiển thị thời gian. Nhưng mà PHP không chỉ làm việc với nhiêu đó, mà nếu mình kể ra thì không biết bao giờ cho hết được.
Ngoài ra một nhiệm vụ quan trọng nữa của PHP để có thể hình thành lên những trang web động đó là kết nối với một máy chủ chứa cơ sở dữ liệu để thao tác như nhập, xoá, sửa và lấy dữ liệu về website. Công việc này nó giống như kiểu bạn đi vào website, PHP tự hiểu bạn cần xem dữ liệu gì, rồi nó kêu kêu thằng cơ sở dữ liệu là cần lấy cái này, lấy cái kia để đưa ra cho bạn xem. Hoặc là ví dụ rõ ràng hơn trong WordPress, khi bạn đăng một Post thì cái post đó sẽ được lưu vào cơ sở dữ liệu.
PHP trong WordPress
Bây giờ bạn muốn biết PHP làm gì trong WordPress thì hãy xem mã nguồn của theme Twenty Fifteen, mở template content.php lên và xem. Trong đó là một cấu trúc của một bài viết, bạn có thể dễ dàng thấy là nó được lồng vào trong những thẻ HTML nhằm hiển thị ra bên ngoài, ví dụ như bạn có thể thấy đoạn này:
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
Nó sẽ sử dụng các hàm đặc biệt của WordPress như the_ID() hay post_class() để hiển thị các thông tin tương ứng vào bên trong thẻ HTML này. Lúc này nó sẽ hiển thị nội dung HTML ra ngoài trình duyệt kiểu thế này:
[html]<article id=”post-24819″ class=”post-24819 post type-post status-publish format-standard has-post-thumbnail hentry”>[/html]
Hoặc nó áp dụng mệnh đề if else trong ngôn ngữ PHP để hiển thị thành phần trong một bài viết như thế này:
if ( is_single() ) :
the_title( ‘<h1 class="entry-title">’, ‘</h1>’ );
else :
the_title( sprintf( ‘<h2 class="entry-title"><a href="%s" rel="bookmark">’, esc_url( get_permalink() ) ), ‘</a></h2>’ );
endif;
Các kiến thức PHP để lập trình trong WordPress
Khi học PHP, bạn sẽ được học rất nhiều các kỹ thuật liên quan đến lập trình website nhưng không phải cái nào cũng sử dụng trong WordPress, nhưng nếu bạn có nhiều kiến thức về PHP thì tốt cho bạn thôi.
Kiến thức căn bản
Các kiến thức căn bản về PHP nói riêng hay một ngôn ngữ lập trình nói chung như kiểu dữ liệu (data types), biến (variable), mảng (array), vòng lặp (loop), mệnh đề rẽ nhánh if else (if statement) là những kiến thức bắt buộc bạn cần phải biết. Mấy cái này thì dĩ nhiên là phải biết rồi nhưng mình nói ra để bạn biết là nó rất quan trọng nên hãy nắm thật vững.
Kiến thức về hàm (function)
Kỹ thuật xây dựng hàm rất quan trọng khi bạn lập trình trong WordPress. Trong mã nguồn này nó có rất nhiều hàm có sẵn mà nếu bạn chưa biết qua thì khó lòng mà làm việc trong WordPress được. Thật ra khái niệm hàm cũng rất đơn giản, nếu bạn chưa học qua PHP thì mình xin nói trước rằng hàm nghĩa là một tập hợp các kịch bản PHP và nó sẽ được thực thi khi hàm được gọi ra.
Thành thạo mảng (Array)
Mảng là kiểu dữ liệu rất quan trọng trong bất cứ dự án nào, trong đó có WordPress. Hãy tưởng tượng mảng là một biến có nhiều giá trị, trong WordPress nó thường sử dụng mảng cho 2 việc, đó là để thiết lập các tham số khi sử dụng một hàm hoặc một lớp (class) nào đó, và việc còn lại là để xử lý các dữ liệu được trả về khi sử dụng một hàm nào đó trong WordPress. Cho nên chỉ có thông thạo thao tác xử lý mảng, bạn mới có thể không phải lấn cấn khi học WordPress nâng cao.
Lớp và Đối tượng (Class & Object)
Lớp nó cũng giống như mảng vậy, là tập hợp các kịch bản PHP nhưng sẽ nằm ở cấp độ cao hơn. Và trong lớp nó có thể chứa các biến (gọi là thuộc tính) và các hàm bên trong lớp (gọi là phương thức). Và khi lớp được tái tạo thì nó sẽ trả về các đối tượng dữ liệu. Cái này khi học PHP bạn có thể thực hành càng nhiều càng tốt, và khi học đến đây là coi như bạn đã học lập trình hướng đối tượng (OOP) rồi.
Sở dĩ mình kêu các bạn học phần này là vì ngoài hàm, WordPress còn có một số lớp mà bạn sử dụng rất thường xuyên mà thông dụng nhất là lớp WP_Query (để tạo truy vấn) và lớp WP_Widget (để tạo widget). Ngoài ra, khi bạn lấy dữ liệu của bài viết thì bạn sẽ làm việc với đối tượng rất nhiều (cụ thể là đối tượng $post).
Tài nguyên học PHP
Tiếng Anh (khuyến khích)
CodeAcademy
Nếu bạn có thể đọc tiếng Anh mà muốn học PHP đỡ chán hơn thì nên thử qua khóa học PHP căn bản này. Sở dĩ học tại CodeAcademy mình rất thích là vì bạn vừa học vừa thực hành luôn, tức là bạn sẽ học các kiến thức mới thông qua giải các bài tập từ gợi ý của họ, làm một lần là nhớ rất lâu.
200 video học PHP của TheNewBoston
TheNewBoston là một kênh học code rất nổi tiếng trên Youtube rồi, và nếu bạn muốn học PHP, chưa biết đến kênh này thì hãy thử ngay bộ bài học PHP từ cơ bản đến nâng cao của họ. Với 200 bài hướng dẫn cực kỳ chi tiết, dễ nghe, bạn có thể nắm vững kiến thức PHP vì không chỉ học mà serie này còn có các bài tutorial rất trực quan nữa.
PHP the right way
Nếu bạn đã từng học lập trình, đã nắm được một vài ngôn ngữ và muốn bắt đầu với PHP thì bạn nên bắt đầu tại đây. Cái tên nói lên tất cả, đây là một cuốn sổ tay hướng dẫn bạn học PHP theo cách đúng nhất, được cập nhật với nền tảng kiến thức mới nhất vì hiện nay trên mạng có rất nhiều tutorial về PHP đã lỗi thời. Nếu bạn follow theo cuốn sổ tay này, mình nghĩ kiến thức về PHP của bạn sẽ không thuộc dạng kém đâu.
Tiếng Việt
QHOnline
Cách đây vài năm về trước, đây chính là nơi mình đã học PHP căn bản và sau đó là PHP nâng cao. Với cách giảng dạy dễ hiểu qua video, có bài tập thực hành kèm theo thì mình tin là bạn có thể hiểu PHP theo hướng đơn giản nhất mà không phải nhồi nhét quá nhiều định nghĩa phức tạp.
Tài nguyên PHP trong WordPress
Dưới đây là các liên kết hữu ích để bạn có thể tra cứu về mã nguồn WordPress khi cần.
PHP Coding Standard
Để tránh code của bạn khó đọc, WordPress có biên soạn một tiêu chuẩn viết code trong WordPress để nó thân thiện hơn với người đọc, đồng bộ với mã nguồn nên nếu có thể, hãy xem qua các quy tắc viết PHP của họ để viết code tốt hơn.
WordPress Code Reference
Nếu trong lúc học WordPress nâng cao hoặc viết code trong WordPress mà có gặp hàm nào khó hiểu hoặc muốn tìm hàm nào đó thì có thể sử dụng trang này để tra cứu. Ở đó bạn có thể biết chi tiết về các đoạn code trong WordPress, cũng như cách sử dụng nó, hầu như bạn sẽ dùng liên tục.
WordPress Plugin Handbook
Bạn không biết các kiến thức trong WordPress cần thiết để có thể lập trình được plugin? Hãy xem qua cuốn sổ tay này, ở đó có chi tiết các trình tự các kiến thức cần có để có thể viết plugin trong WordPress.
Lời kết
Mặc dù mình đã không đăng serie học PHP trong WordPress nhưng hy vọng với những tài nguyên và các lời khuyên ở trên, bạn có thể lên kế hoạch rõ ràng hơn để học PHP, biết mình học để làm gì và học như thế nào để có thể làm việc được trong WordPress.
Chúc các bạn sớm thành thạo lập trình WordPress!