Trang chủ Blog Trang 2

Bài 01: Viết chương trình PHP CURL đầu tiên

0

Như các bạn biết CURL là một chương trình, một thư viện được tích hợp trong PHP với mục đích là truyền dữ liệu dưới dạng protocols nên nó được ứng dụng rất rộng rãi hiện nay. Ví dụ bạn viết chương trình đăng nhập tự động vào Google bằng cách sử dụng code PHP thì thông thường chúng ta sử dụng thư viện fsockopen, nhưng từ khi CURL ra đời thì người ta lại chọn CURL. Việc tìm hiểu CURL cũng rất đơn giản, quan trọng là bạn đang giải quyết bài toán nào mà từ đó có cách sử dụng hợp lý.

Trong loạt serie CURL này chúng ta sẽ tìm hiểu CURL căn bản từ a -> z và đi từng phần một nên nó sẽ hơi dài dòng. Bài đầu tiên này chúng ta sẽ viết một chương trình CURL đầu tiên nhé.

1. Viết chương trình  PHP CURL đầu tiên

Trước tiên bạn tạo một file index.php với nội dung như sau:

Chạy lên các bạn thấy giao diện chính là website học lập trình online freetuts.net. Quay lại trong ví dụ thì bạn để ý khi thực hiện một ứng dụng CURL thường có ba bước.

  • Bước 1: Khởi tạo CURL
  • Bước 2: Cấu hình thông số cho CURL
  • Bước 3: Thực thi CURL
  • Bước 4: Ngắt CURL, giải phóng dữ liệu

Như vậy chúng ta có 4 bước căn bản, tuy nhiên vẫn có những bài toán chúng ta không tuân theo quy tắc này.

Trong phần cấu hình:

Chúng ta chú ý rằng hàm curl_setopt sẽ có ba tham số:

  • 1 là đối tượng CURL,
  • 2 là tên cấu hình và
  • 3 là giá trị.

Hằng số CURLOPT_URL chính là URL muốn xử lý, ở đây tôi nhập  domain freetuts.net, tất cả các cấu hình đều sẽ có tên bắt đầu bằng CURLOPT_TENCAUHINH.

2. Lời kết

Bài đầu Serie mang tính chất giới thiệu thôi, các bài sau sẽ khốc liệt hơn nhiều 😀 Nhưng các bạn yên tâm nhé, xong serie này đảm bảo các bạn đủ kiến thức để làm mọi thứ liên quan đến CURL như lấy ảnh từ website khác, submit form bằng CURL, … Chúc bạn học tốt!

Nguồn: freetuts.net

Bài 09: Hàm random_int() và random_bytes() trong PHP7

0

Trong PHP7 đã bổ sung hai hàm dùng để tạo giá trị ngẫu nhiên đó là hàm random_int() và random_bytes(), về chức năng  thì nó giống hàm rand() trong PHP vậy.

  • random_bytes : trả về định dạng byte
  • random_int: trả về một số ngẫu nhiên

1. Hàm random_bytes trong PHP7

Hàm random_bytes sinh ra ngẫu nhiên một chuỗi dạng byte nên rất phù hợp sử dụng trong mã hóa. Nếu bạn echo kết quả thì sẽ sinh ra những ký tự kiểu binary không thể nào đọc được.

Cú pháp:

1
string random_bytes ( int $length )

Trong đó $length là chiều dài của chuỗi trả về.

Ví dụ:

1
2
3
4
5
6
<?php
   $bytes = random_bytes(10);
   echo $bytes;
   echo '<br/>';
   echo (bin2hex($bytes));
?>

Trong ví dụ thứ hai mình dùng hàm bin2hex để chuyển chuỗi binary đó sang mã hexadecimal.

2. Hàm random_int trong PHP7

Hàm này sinh ra một số nằm trong khoảng min max nào đó, kết quả trả về kiểu INT (kiểu INT là thuộc hệ cơ số 10 nên việc trình bày và tính toán nó tương đối dễ hiểu).

Cú pháp:

1
int random_int ( int $min , int $max )

Trong đó $min và $max là khoảng mà kết quả trả về sẽ nằm trong đó.

Ví dụ:

1
2
3
4
5
<?php
   echo random_int(10, 2000);
   echo '<br/>';
   echo random_int(-2000, 2000);
?>

3. Lời kết

Cá nhân mình thấy việc tạo số kiểu INT ngẫu nhiên trong PHP đã có hàm rand rồi nên trong hai hàm này thì hàm random_bytes là mới lạ hơn hàm random_int.

Nguồn: freetuts.net

Bài 08: Closure::call() trong PHP7

0

Trong bài này chúng ta tìm hiểu đến Closure Call, một phương thức mới trong PHP7. Và trước khi vào bài thì mình giới thiệu sơ lược qua phương thức Closure bindTo đã nhé, đây là một phương thức có chức năng tương tự như Closure Call.

1. Closure bindTo

Các phiên bản trước có sử dụng một phương thức Closure đó là phương thức Closure bindTo, phuong thức này sẽ gọi đến một đối tượng và gán nó vào hàm closure.

Ví dụ:

Kết quả nó sẽ in ra trình duyệt là ‘Cat’.

Như vậy đối với Closure bindTo thì kết quả sẽ trả về là function closure và đối tượng sẽ được gắn vào chính function closure đó, vì vậy để lấy kết quả thì ta phải chạy function đó (chính là $getName).

2. Closure Call

Phương thức này giống với bindTo, tuy nhiên điểm khác đó là tốc độ xử lý của Closure Call sẽ nhanh hơn Closure bindTo, thứ hai nữa là thay vì trả về một function thì Closure Call sẽ chạy và trả về kết quả luôn.

Ví dụ:

Kết quả cũng in ra trình duyệt là ‘Cat’.

3. Kết hợp với Anonymous Classes

Bây giờ ta sẽ làm một ví dụ kết hợp giữa Closure Call và Anonymous Class. Để đơn giản thì mình sẽ viết lại ví dụ ở phần 2 luôn.

Ví dụ:

Kết quả cũng không có gì thay đổi.

4. lời kết

Trên thực tế thì Closure Call và Closure bindTo mình rất ít khi sử dụng khi xây dựng dự án, tuy nhiên chúng ta cũng nên tìm hiểu nó để sau này có cơ hội thì sử dụng.

Nguồn: freetuts.net

Bài 07: Anonymous Classes trong PHP7

0

Trước đây để khởi tạo mới một đối tượng thì bắt buộc ta phải khai báo class trước, điều này rất rõ ràng nhưng lại không đáp ứng được một số trường hợp trong thực tế, vì vậy Anonymous Classes ra đời.

Để phân biệt class thông thường và Anonymous Class thì trước tiên chúng ta tìm hiểu cú pháp class thông thường đã nhé.

1. Tạo class các phiên bản trước PHP7

Dưới đây là một ví dụ tạo và sử dụng class trong các phiên bản trước PHP7.

Chạy ví dụ lên sẽ xuất hiện dòng chữ “Đây là động vật hoang dã! – freetuts.net“. Điều này quá bình thường rồi, nhưng bạn hãy xem ví dụ ở phần 2 dưới đây.

2. Anonymous Classes trong PHP7

Với ví dụ ở phần 1 trên thì mình sẽ viết lại dưới dạng Anonymous Class như sau:

Chạy lên kết quả cũng không thay đổi gì. Như vậy để khai báo một Anonymous Class thì ta dùng cú pháp sau:

3. Một số ví dụ Anonymous Class trong PHP7

Sau đây là một số ví dụ cách sử dụng Anonymous Class rất hay mà bạn nên biết.

Sử dụng là một tham số

Anonymous Class có kế thừa

Nếu bạn đã từng tìm hiêu qua Anonymous function trong jQuery hoặc trong PHP thì sẽ thấy nó rất dễ hiều.

4. Ưu điểm và nhược điểm của Anonymous Class

Ưu điểm: Việc sử dụng Anonymous Class cũng có những ưu điểm và nhược điểm. Cá nhân mình nhận thấy khi ban khởi tạo một Anonymous Class thì tốc độ xử lý sẽ nhanh hơn bởi bộ nhớ chỉ lưu trữ một lần cho class đó mà thôi. Ngoài ra chúng ta có thể tạo class một cách nhanh chóng không mất nhiều thời gian.

Nhược điểm: Việc sử dụng Anonymous Class chỉ dùng cho những trường hợp xử lý đơn giản bởi nó không có tính chất tái sử dụng, thứ hai nữa là khó nâng cấp và bảo trì đối với những thể loại này.

5. Lời kết

Như vậy một Anonymous Class thực chất là cách khai báo và sử dụng nhanh một class, khi sư dụng cách này bạn sẽ không có tính mở rộng mà chỉ mang tính chất sử dụng tạm thời, vì vậy phải cân nhắc khi sử dụng loại class này. Tuy nhiên trong một số trường hợp Anonymous Class lại được sử dụng vì tính nhanh gọn của nó.

Nguồn: freetuts.net

Bài 06: Constant Arrays trong PHP7

0

Trong bài này chúng ta tìm hiểu đến một sự thay đổi lớn trong việc gán giá trị cho các hằng số trong PHP đó là việc bổ sung gán giá trị là mảng cho hằng số, đây là một sự thay đổi rất hay.

Trước tiên mình tìm hiểu về cách khai báo hằng trong PHP version <= 5.6 đã nhé.

1. Khai báo hằng trước đây

Trước đây khi khai báo hằng số thì bạn chỉ được phép gán kiểu dữ liệu đơn giản cho các hằng số đó, các kiểu dữ liệu đơn giản như là kiểu Int, kiểu String, boolean, … Bạn không thể gán kiểu dữ liệu mảng, object cho hằng số được.

Ví dụ:

2. Khai báo hằng trong PHP7

Tuy nhiên với PHP7 thì bạn có thể gán giá trị cho hằng số là một mảng gồm nhiều phần tử, riêng đối với Object thì không thể gán được.

Ví dụ:

Rất tiện lợi phải không các bạn. Thay vì phải định nghĩa hai hằng số thì mình chỉ cần định nghĩa một hằng số là được. Vấn đề bây giờ để truy xuất đến một phần tử trong mảng hằng số đó thì phải làm như thế nào? Các bạn xem ví dụ nhé.

Thật tuyệt vời 🙂

3. Lời kết

Với sự thay đổi này thì cá nhân mình thấy nó rất tiện lợi trong việc lưu trữ dữ liệu bởi vì chúng ta chỉ cần khai báo một hằng số và truy xuất các phần tử thông qua cú pháp của mảng.

Nguồn: freetuts.net

Bài 05: Các toán tử mới trong PHP7

0

Ngoài các toán tử như toán tử quan hệ, toán tử luận lý mà PHP đang hỗ trợ thì PHP7 đã bổ sung thêm một số toán tử rất hay giúp việc xử lý dữ liệu nhanh hơn. Trong bài viết mình chỉ giới thiệu những toán tử mà mình biết thôi nhé, sau này tìm ra thêm mình sẽ bổ sung.

1. Toán tử ?? Null Coalescing Operator

Trong PHP7 có giới thiệu toán tử ??, đây là toán tử dùng để thay thế cho hàm isset khi ta gán dữ liệu. Ví dụ khi bạn lấy dữ liệu từ phương thức GET thì thông thường ta sử dụng thêm hàm isset để kiểm tra như sau:

Hoặc kết hợp với toán tử ba ngôi:

Tuy nhiên nếu sử dụng toán tử ?? thì ta viết đơn giản nhu sau:

Như vậy cú pháp sẽ như sau:

Giải thích: Nếu biểu thức $is_null có giá trị khác null thì biến $id sẽ có giá trị là $is_null, ngược lại biến $id sẽ có giá trị là ok.

2. Toán tử <=> Spaceship Operator

Đây là toán tử thường dùng với kiểu số (INT), nếu bạn sử dụng với kiểu chuỗi thì hệ thống sẽ dựa vào mã ASCII để lấy ra số của chuỗi đó.

Toán tử này có cú pháp như sau:

Ta sẽ có ba trường hợp xảy ra:

  • Nếu $a > $b thì $result sẽ có giá trị là 1
  • Nếu $a = $b thì $result sẽ có giá trị là 0
  • Nếu $a < $b thì $result sẽ có giá trị là -1

Ví dụ:

3. Lời kết

Hiện tại thì mình mới tìm thấy hai toán tử trên thôi, sau này nếu tìm thấy thêm thì mình sẽ bổ sung cho bài viết. Hoặc nếu bạn biết toán tử nào thì hãy comment để mình bổ sung vào bài viết nhé.

Nguồn: freetuts.net

Bài 04: Tính năng mới khi xây dựng hàm trong PHP7

0

PHP7 đã cung cấp thêm một số tính năng mới cho việc xây dựng hàm rất giống với ngôn ngữ C, C++ hay C# đó là ta có thể ràng buộc kiểu dữ liệu của các tham số trong hàm, xác định kiểu giá trị trả về của hàm.

Trước khi vào bài học thì mình đưa ra danh sách các kiểu dữ liệu thông dụng trong PHP7 đã nhé.

1. Danh sách các kiểu dữ liệu trong PHP7

Trong PHP7 chúng ta có một số kiểu dữ liệu như sau:

  • int
  • float
  • bool
  • string
  • interfaces
  • array
  • callable
  • Object (tự định nghĩa)

2. Xác định kiêu dữ liệu của tham số

Nếu bạn đã từng học qua các ngôn ngữ khác như Pascal, C, C++, C# thì bạn sẽ thấy khi chúng ta khai báo biến thì bắt buộc phải xác định luôn kiểu dữ liệu cho biến, điều này trong PHP là không cần thiết bơi cú pháp của nó chỉ cần khai báo tên biến kiểu dữ liệu của biến sẽ phụ thuộc vào giá trị mà ta gán cho nó.

Điều này cho thấy PHP là một ngôn ngữ hơi nhẹ dạ trong việc ràng buộc kiểu dữ liệu nên rất tiện lợi khi ta xây dựng ứng dụng web, tuy nhiên cũng có nhiều người cho rằng nó sẽ không có đầy đủ tính chất của một ngôn ngữ lập trình, dễ gây ra nhầm lẫn, nhất là khi sử dụng hàm. Tuy nhiên bây giờ PHP7 đã bổ sung phần khai báo kiểu dữ liệu cho tham số truyền vào nên đây có thể coi là một bước nhay rất hay của PHP7.

Ví dụ:

Chạy lên bạn sẽ thấy xuất hiện một thông báo như sau:

Nhưng nếu bạn bật chế độ Strict Mode và nhập dữ liệu vào như ví dụ dưới đây thì sẽ bị thông báo lỗi.

Kết quả:

2. Xác định kiểu dữ liệu trả về cho hàm

Khi xây dựng hàm thì chúng ta có hai loại hàm chính đó là hàm có giá trị trả về và hàm không có giá trị trả về. Hàm có giá trị trả về làm hàm có sử dụng lệnh return để trả về một giá trị nào đó, còn hàm không có giá trị trả về thì không có sử dụng lênh return nên nó sẽ trả về một giá trị NULL. Trong C, C++ nếu bạn đã khai báo một hàm là hàm có giá trị trả về thì bắt buộc bạn phải sử dụng lệnh return, vậy trong PHP7 như thế nào thì chúng ta cùng tìm hiểu nhé.

Trong PHP7 để xác định kiểu giá trị trả về cho hàm thì ta sử dụng cú pháp sau:

Trong đó return_type chính là kiểu dữ liệu trả về và nó nằm một trong các kiểu dữ liệu mà mình đã liệt kê ở phần 1.

Ví dụ:

Kết quả sẽ in ra con số 5. Tuy nhiên nếu bạn bật chế độ Strict Mode và truyền vào là hai chuỗi thay vì 2 số thì lập tức sẽ bị lỗi ngay.

Kết quả:

Lý do nó báo lỗi là do bạn truyền vào là hai chuỗi nên phép $a + $b sẽ trả về một chuỗi chứ không phải là trả về một con số nữa.

3. Lời kết

Cá nhân mình thấy đây là sự thay đổi rất hay và rất thực tế, phù hợp với nhu cầu ràng buộc của các công cụ lập trình. Bài này mình xin dừng tại đây, hẹn gặp lại các bạn ở bài tiếp theo.

Nguồn: freetuts.net

Bài 03: Chế độ Strict Mode và Coercive Mode trong PHP7

0

Chế độ Strict Mode mình đã từng giới thiệu ở series học Javascript căn bản rồi, đây là chế độ ràng buộc có tính chất cao nhất trong lập trình, và trong PHP7 đã bổ sung chế độ này.

1. Coercive Mode

PHP7 có cung cấp nhiều cú pháp mới và có tính ràng buộc cao nên mặc định khi bạn lập trình thì bạn đang sử dụng chế độ cưỡng chế (Coercive Mode), đây là chế độ giảm nhẹ tính ràng buộc với các cú pháp mới của PHP7.

Ví dụ: Đây là một ví dụ mà bạn chưa học, ví dụ này sẽ được trình bày trong bài tiếp theo.

Trong ví dụ này mình ràng buộc kiểu dữ liệu truyền vào hàm là kiểu INT nhưng khi sử dụng mình lại truyền kiểu String, điều này không đúng nên đáng lẽ ra phải thông báo lỗi. Tuy nhiên trong PHP các phiên bản trước thì có thể sử dụng được nên với chế độ Coercive Mode nó đã bỏ qua lỗi này.

2. Strict Mode

Strict Mode là chế độ nghiêm ngặt hơn, nếu bạn vi phạm một cú pháp nào thì cũng bị thông báo lỗi.

Để khai báo sử dụng chế độ strict mode thì bạn đặt đoạn code sau ở đầu file (lưu ý là phải đặt ở đầu file).

Quay lại ví dụ trên nếu ta đặt chế độ strict mode thì lập tức sẽ bị thông báo lỗi ngay.

3. Lời kết

Như vậy là mình đã giới thiệu xong hai chế độ Coercive mode và Strict mode trong PHP7, qua bài này hy vọng bạn hiểu hai khái niệm này để qua các bài tiếp theo bạn sẽ dễ dàng học hơn.

Nguồn: freetuts.net

Bài 02: Cài đặt XAMPP hỗ trợ PHP7 trên localhost

0

Trước khi bắt đầu học PHP7 thì bắt buộc bạn phải cài đặt PHP7 thì mới có thể chạy các tính năng mới của nó được. Để cài đặt PHP7 thì mình xin chia ra làm hai loại chính, loại thứ nhất là cài đặt tại localhost để học và loại thứ hai là cài đặt trên VPS hoặc Server để chạy live.

Nhưng vì series này chúng ta đang học nên mình chỉ hướng dẫn các bạn cài đặt XAMPP 7.0.2  trên localhost vì nó có tích hợp PHP7 sẵn rồi nên bạn chỉ việc cài đặt và sử dụng mà thôi. Còn nếu bạn đang sử dụng Hosting thì bắt buộc bạn phải liên hệ với nhà cung cấp dịch vụ để họ nâng PHP lên PHP7.  Còn nếu bạn sử dụng VPS riêng thì bạn có thể tự cài đặt được, bạn có thể lên mạng search google để tìm hiểu thêm.

Ok mình tiếp tục bài học nhé. Bạn hãy vào bài download XAMPP này và chọn version 7.x.x phù hợp với hệ điều hành của bạn, sau đó cài đặt là xong. Hẹn gặp lại bạn ở bài tiếp theo nhé.

Nguồn: freetuts.net

Bài 01: PHP7 là gì? PHP7 có gì mới?

0

Trong bài đầu tiên này mình sẽ giới thiệu với các bạn khái niệm PHP7 là gì và một số tính năng của PHP7 so với các version cũ hơn.

Như ta biết version cao nhất trước PHP7 đó là PHP 5.6, và nếu đúng ra thì khi nâng cấp lên version có tính đột phá thì lúc này sẽ phải là PHP6, nhưng tại sao lại có sự nhảy bật từ 5 -> 7 như vậy? Lý do là PHP6 người ta cũng đã nghiên cứu và đưa vào thử nghiệm, tuy nhiên sau một thời gian người ta đã quyết định bỏ luôn version 6 và nhảy lên một version mới hơn đó và version 7, vì vậy PHP6 đã không tồn tại.

1. PHP7 là gì?

PHP7 là một phiên bản của ngôn ngữ PHP được giới thiệu vào ngày 3 tháng 9 năm 2015, đây là phiên bản mới nhất và được trông đợi nhất bởi có nhiều sự thay đổi về cú pháp, bổ sung các thư viện hiện đại giúp ngôn ngữ PHP trở nên đa dạng hơn.

Để tránh sự nhầm lẫn giữa các version thì sau này chúng ta hay gọi PHP version 7 là PHP7, còn các version trước đó là PHP.

2. PHP7 có gì mới?

Vì đây là bài đầu tiên trong series nên mình chỉ trình bày sơ lược về các điểm mới của PHP7 so với các phiên bản PHP trước đó.

Tốc độ PHP7 nhanh gấp hai lần

Với việc sử dụng thư bộ core Zend Engine mới PHPNG nên tốc độ của PHP7 tăng gấp hai lần, cho dù là Framework hay CMS thì hiệu xuất xử lý đều tăng gấp đôi. Để chứng minh thì mình lấy một hình ảnh thông tin benchmark hai CMS nổi tiếng đó là Drupal và WordPress của Teamtreehouse blog.

Với hiệu suất như thế này thì chúng ta không thể không nâng cấp lên PHP7 phải không nào.

Chỉ rõ kiểu dữ liệu cho biến

Nếu bạn đã từng học qua ngôn ngữ C, C++ thì bạn sẽ thấy khi khai báo một biến chúng ta phải khai báo luôn kiểu dữ liệu cho biến đó. Ví dụ khai báo biến studentName kiểu INT thì code C++ sẽ như sau:

Ví dụ trong PHP7:

Xác định kiểu trả về cho hàm

Trong C hay C++ có thể định nghĩa kiểu dữ liệu trả vè cho hàm, ví dụ:

Điều này hoàn toàn làm được trong PHP7 như sau:

Có nhiều toán tử mới

Ngoài các toán tử có sẵn thì trong PHP7 có bổ sung thêm nhiều toán tử mới lạ.

Ví dụ:

Bổ sung Anonymous Class

Trong PHP7 có thể sử dụng Anonymous Class giống như Anonymous Function.

Xóa đi một số extension:

Các ext đã bị remove:

  • ereg
  • mssql
  • mysql
  • sybase_ct

Các ext mới thêm:

  • aolserver
  • apache
  • apache_hooks
  • apache2filter
  • caudium
  • continuity
  • isapi
  • milter
  • nsapi
  • phttpd
  • pi3web
  • roxen
  • thttpd
  • tux
  • webjames

Và nhiều tính năng khác

Còn rất nhiều tính năng khác nữa nhưng mình không trình bày trong series này mà sẽ trình bày ở các bài tiếp theo.

3. Lời kết

Như vậy PHP7 ra đời là một bước đột phá rất quan trọng bởi hiện nay có khá nhiều công nghệ ra đời với tốc độ xử lý nhanh nên PHP cần phải cạnh tranh rất nhiều mới giữ được vị trí của mình trên thị trường.

Bài này mình chỉ giới thiệu sơ lược khái niệm PHP7 là gì và một số tính năng mới trong PHP7, bài viết mang tính chất tham khảo và không đi sâu vào từng chức năng cụ thể, vì vậy để hiểu rõ hơn thì bạn nên đọc toàn bộ series này.

Nguồn: freetuts.net

Tìm hiểu cấu trúc Theme WordPress

0

Ở bài trước thì Connor cũng đã giới thiệu sơ lược về khái niệm wordpress là gì và chắc rằng các bạn cũng biết cách cài đặt WordPress luôn rồi. Vậy trong bài này chúng ta cùng nhau mổ xẻ cấu trúc themes mặc định mà WordPress đã cung cấp sẵn ngay sau khi chúng ta cài đặt WordPress đó là theme twentyfifteen.

Tại sao Connor lại muốn các bạn tìm hiểu cấu trúc theme? Đây là một công đoạn hết sức quan trọng vì điều đầu tiên trong việc lập trình Theme WordPress là phải nắm rõ được bố cục của một theme WordPress như thế nào? Các folders và các files được sắp xếp ra sao? Đó là lý do mình muốn các bạn phải nắm rõ bố cục một theme và theme mà mình lựa chọn để mổ xẻ đó là theme twentyfifteen, đây là một theme mặc định có sẵn trong hệ thống WordPress và tất nhiên là cấu trúc folder được sắp xếp và lập trình theo chuẩn của WordPress, vì vậy còn gì tuyệt vời hơn nếu chúng ta bắt đầu tìm hiểu từ nó.

1. Cấu trúc theme twentyfifteen

Đây là một trong các theme mặc định được WordPress cung cấp với bố cục giao diện cực kì đơn giản, và đặc biệt hơn là ngay từ lần cài đặt WordPress đầu tiên thì hệ thống sẽ tự kích hoạt theme này cho website của các bạn. Nếu bạn nào đã từng sử dụng qua WordPress thì chắc hẳn sẽ không quá lạ lẫm với theme này. Ở phiên bản hiện tại thì twentyfifteen đã được nâng cấp giao diện tương thích với table, smartphone, ipad và một số độ phân giải khác.

Sau khi các bạn đã chiêm ngưỡng xong giao diện của theme twentyfifteen thì giờ là tới lúc chúng ta tìm hiểu về cấu trúc folder của nó. Ở đây Connor có chụp sẵn ảnh toàn bộ cấu trúc folder của theme này.

Nhìn vào giao diện thì có lẽ bạn nghĩ chỉ cần một vài file PHP là có thể tạo thành một website như vậy được. Nhưng sự thật không như bạn nghĩ, bạn sẽ phải cần tối thiểu là các files và folders như hình ảnh trên bởi vì mỗi một file bên trong cấu trúc này sẽ có một nhiệm vụ cố định nào đó và chúng không thể nhầm lẫn với nhau được.

Với cấu trúc này thì các bạn cần phải nắm rõ một số file quan trọng như sau. Lưu ý các file này cực kỳ quan trọng nhé, nếu thiếu một trong các file này thì theme của các bạn sẽ bị lỗi trắng trang ngay, hoặc sẽ vướng phải một số lỗi 404 không đáng có.

File style.css:

File đầu tiên là file style.css. Khi bạn mở file này lên thì sẽ thấy nó có một phần nội dung như sau:

1
2
3
4
5
6
7
8
9
10
Theme Name: Twenty Fifteen
Author: the WordPress team
Description: Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen  and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes , regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.
Version: 1.3
License: GNU General Public License v2 or later
Tags: black, blue, gray, pink, purple, white, yellow, dark, light, two-columns, left-sidebar, fixed-layout, responsive-layout, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, -language-support, sticky-post, threaded-comments, translation-ready
Text Domain: sizes,center-stagertltwentyfifteen

Đây ta gọi là phần khai báo thông tin cho theme. Nghĩa là trong một theme phải có file style.css đặt ở ngoài cùng và bên trong bạn sẽ khai báo các thông tin:

  • Theme name: Tên theme mà các bạn khai báo để cài đặt trong admin
  • Theme Uri: Đường dẫn tới theme này
  • Author: Tên tác giả của theme.
  • Version: Phiên bản của theme
  • Tags: Nếu theme này bạn có upload lên cộng đồng WordPress thì hãy điền phần từ khóa này vào, ví dự như là blue, black, khi ai có nhu cầu tìm kiếm themes, nếu họ điền vào một trong các từ khóa mà bạn đã khai báo, thì khả năng họ sẽ tìm kiếm ra themes của bạn.
  • Text Domain: Đây là phần cấu hình textdomain để sử dụng đa ngôn ngữ (phần này mình sẽ hướng dẫn sau).

File screenshot.png:

File screenshot.png dùng để hiển thị hình ảnh đại diện của theme trong khu vực cài đặt themes của admin, đây là hai file quan trọng và bắt buộc theme nào cũng phải có.

File functions.php:

File functions.php là file chứa những đoạn code tạo nên các chức năng mới của theme hoặc customize một chức năng có sẵn nào đó. Ví dụ bạn cần tạo một widget hiển thị bài viết mới nhất thì bạn sẽ code nó trong file functions.php hoặc ở một file khác rồi include nó vào file functions.php.

Các file khác:

Các files còn lại được mô tả như sau:

  • index.php: Là trang chủ
  • header.php : Phần code cho header của layout
  • footer.php: Phần code cho footer của layout
  • sidebar.php: Phần code cho sidebar nằm ở bên trái hoặc bên phải.
  • page.php: Trang danh sách các page
  • single.php: Trang chi tiết bài viết
  • comments.php: Trang hiển thị danh sách các phản hồi
  • content.php: Hiển thị toàn bộ danh sách bài viết ở dạng thu gọn
  • content-page.php: Trang chứa các bài viết của thể loại page
  • search.php: Trang tìm kiếm
  • content-search.php: Phần code chứa nội dung để hiển thị các dữ liệu được tìm kiếm.
  • archive.php: Tran lưu trữ toàn bộ các bài viết theo năm tháng, ngày, tác giả

Hiện tại các bạn chỉ cần biết tổng quát về cấu trúc theme như thế là đủ rồi, ở các bài khác thì Connor sẽ giải thích và hướng dẫn chi tiết hơn về định nghĩa của từng file cũng như mỗi file sẽ sử dụng các hàm có sẵn nào trong WordPress. Bạn cũng có thể tham khảo thêm bài viết các file cần thiết trong theme WordPress để hiểu rõ hơn.

2. Lời kết

Lý do vì sao hôm này Connor quyết định mổ xẻ cấu trúc theme twentfifteen cùng với các bạn thì bởi vì để tự viết mới một theme thì việc đầu tiên chúng ta cần làm là phải biết được cấu trúc folder chứa theme sẽ bao gồm các folder và các file nào, từ đó cứ theo thứ tự cấu trúc đó mà chúng ta sẽ dễ dàng xây dựng theme hơn. Các bạn cố gắng xem kỹ bài này và nắm rõ một số file quan trọng vì Theme sắp tới mà Connor hướng dẫn các bạn xây dựng từ a->z sẽ có cấu trúc tương tự giống vậy, và chỉ bổ sung thêm một số thành phần mở rộng mà thôi.

Nguồn: freetuts.net

Bài 12: Custom Taxonomy trong WordPress

0

Bài trước mình đã hướng dẫn bạn tạo một thể loại bài viết mới bằng các sử dụng hàm register_post_type, tuy nhiên bấy nhiêu đó là chưa đủ để bạn có thể xây dựng những ứng dụng thực tế được. Ví dụ bạn xây dựng một website bán hàng và bạn cần lưu trữ thông tin brand (thương hiêu sản phẩm), điều này trong WordPress không hỗ trợ mà nó chỉ hỗ trợ chuyên mục với tags thôi. Nhưng đừng lo nhé, WordPress có hỗ trợ bạn một số API giúp tạo ra những đối tượng tương tự như category đó là Taxonomies.

1. Custom Taxonomies là gì?

Taxonomy là tập hợp những thể loại giống như category. Mặc định khi bạn cài đặt WordPress sẽ có bốn taxonomies đó là Category, Tag, Link Category và Post Format. Vậy Custom Taxonomies là cách sử dụng những Taxonomies API mà WordPress cung cấp sẵn để tạo ra những Taxonomy mới. Ví dụ bạn xây dựng một website bán hàng thì bạn sẽ tạo thêm một số Taxonomies như Brand, Company, …

Tất cả những taxonomies sẽ được lưu trong bảng term_taxonomy, không tin bạn hãy mở bảng này lên thì sẽ thấy một record như sau:

Mô hình cơ sở dữ liệu của Taxonomy và Post sẽ có 5 bảng đó là:

Trong đó:

  • wp_terms: Bảng lưu các record của taxonomies, ví dụ bạn tạo ra chuyên mục tin trong nướcthương hiệu Sony thì bảng này sẽ chứa hai item này.
  • wp_term_taxonomy: Bảng lưu thể loại của taxonomies và các thông tin như thông tin về taxonomy đa cấp. Nó có một khóa ngoại trỏ đến bảng term bởi vì nó là bảng cấu hình của term
  • wp_termmeta: Bảng này lưu trữ các metadata của taxonomies
  • wp_term_relationships: Bảng lưu mối quan hệ giữa taxonomies và bài viết
  • wp_posts: Bảng chứa bài viết

Để dễ hiểu thì tôi khuyên bạn nên thử thêm một vài chuyên mục và sau đó vào trong cơ sở dữ liệu để xem cách nó lưu trữ, như vậy sẽ rất dễ tiếp thu.

2. Tạo Taxonomy trong WordPress

Để tạo một taxonomy thì chúng ta sử dụng hàm register_taxonomy(), và tương tự như hàm register_post_type thì hàm này sẽ được đưa vào Hook init.

Cú pháp của hàm này như sau:

Trong đó:

  • $taxonomy là tên của taxonomy cần tạo, chúng ta nên đặt chữ cái thường không dấu và tiếng Anh kế hợp với ký tự gạch dưới. Ví dụ wp_brand, wp_company
  • $object_type: Tên của thể loại mà taxonomy thuộc về, trong hệ thống gồm có thể loại postpageattachmentrevisionnav_menu_item hoặc là một loại thuộc Custom Post Type.
  • $args là một mảng gồm nhiều key và được giải thích ở phần dưới đây.

Các phần tử của mảng $args:

  • label: Tên mô tả số nhiều dùng cho vấn đề dịch thuật
  • labels: Mảng này gồm nhiều phần tử và chức năng chung là chỉnh sửa text trên giao diện
    • name: Text hiển thị trên menu chính của taxonomy, ví dụ Brand
    • singular_name: Tên của taxonomy, ví dụ mỗi category thì ta gọi là mỗi category
    • menu_name: Tên hiển thị trên menu, nếu không truyền vào thì nó lấy giá trị của key name
    • all_items: Tìm hiểu sau
    • edit_item: Nhãn hiển thị thay thế cho từ Edit Tag hoặc Edit Category
    • view_item: Tìm hiểu sau
    • update_item: Nhãn hiển thị cho Update Tag hoặc Update Category
    • add_new_item: Nhãn hiển thị cho Add New tag hoặc Add New Category
    • new_item_name: Tìm hiểu sau
    • parent_item: Tìm hiểu sau
    • parent_item_colon: Tìm hiểu sau
    • search_items: Nhãn hiển thị cho Search Tag hoặc Search Category
    • popular_items: Nhãn hiển thị cho Popular Tag hoặc Popular Category
    • separate_items_with_commas: Ký tụ seperate trong hộp metabox hiển thị ở trang edit bài viết
    • add_or_remove_items: Nhãn hiển thị cho chuỗi Separate tags with commas ở hộp metabox trong trang edit bài viết
    • choose_from_most_used: Text hiển thị cho đoạn text Choose From Most Use phần Meta Box ở trong trang edit bài viết
    • not_found: Text hiển thị cho phần không tìm thấy bài viết
  • public: Nếu giá trị TRUE thì sẽ hiển thị trên menu
  • show_ui: Nếu giá trị TRUE thì hiển thị giao diện trong admin
  • show_in_menu: Nếu TRUE thì sẽ hiển thị trong Admin Menu
  • show_in_nav_menus: Nếu có giá trị TRUE thì nó sẽ hiển thị bên trang quản lý menu.
  • show_tagcloud: Hiển thị phần tag cloud ngoài frontend
  • show_in_quick_edit: Hiển thị trong phần Quick Edit bài viết
  • meta_box_cb: Hàm callback gọi đến một hàm Custom Meta Box
  • show_admin_column: Nếu giá trị TRUE thì sẽ tạo ra côt phân loại
  • description: Mô tả cho taxonomy này
  • hierarchical: nếu TRUE thì sẽ giống với Category, ngược lại sẽ giống với Tags
  • update_count_callback: Function callback sẽ gọi khi đếm số lượng của bài viết
  • query_var: Tìm hiểu sau
  • rewrite: Cấu hình rewrite URL
  • capabilities: Nhóm quyền của thể loại này

Về phần giải thích từng phần tử thì nó giống nhu trong bài Custom Post Type, vậy nên bạn hãy đọc bài đó trước khi đọc bài này nhé. Hoặc bạn có thể vào link này để xem phần giải thích trên trang chủ của nó.

Ví dụ: Tạo một Taxonomy brand

Bạn tạo một file tên là custom-taxonomy.php nằm trong thư mục includes và require file này vào file wp-learn.php.

Tiếp theo bạn nhập đoạn code sau vào file custom-taxonomy.php.

Bạn lưu lại và vào edit một bài viết bất kì thì sẽ thấy một hộp Meta Box như sau:

Tiếp theo bạn nhìn lên danh sách Admin Menu Item thì sẽ thấy xuất hiện một đường link mới như sau:

Quá đơn giản phải không các bạn 🙂

3. Lời kết

Qua bài này mình đã hướng dẫn các bạn cách sử dụng hàm register_taxonomy để custom taxonomy trong WordPress, hy vọng qua bài này sẽ giúp bạn hình dung được hệ thống database trong WordPress.

Để dễ hiểu thì mình khuyên bạn nên lên trang chủ của nó để đọc phần giải thích các tham số truyền vào trong hàm register_taxonomy bởi vì mình dịch sang tiếng Việt sẽ hơi khó hiểu. Hoặc bạn vừa học vừa edit các tham số và vừa vào trong hệ thống giao diện Admin để xem những thay đổi của nó để từ đó rút ra chức năng của từng tham số truyền vào.

Bài này mình dừng tại đây, bài tiếp theo có lẽ chúng ta tiếp tục tìm hiểu về Custom Post Type trong WordPress.

Nguồn: freetuts.net

Bài 11: Custom Post Type trong WordPress

0

Trong hệ thống WordPress có nhiều thể loại bài viết như:

  • Post (Post Type: ‘post’)
  • Page (Post Type: ‘page’)
  • Attachment (Post Type: ‘attachment’)
  • Revision (Post Type: ‘revision’)
  • Navigation menu (Post Type: ‘nav_menu_item’)

Đây là các thể loại mặc định có sẵn sau khi bạn cài đặt WordPress. Vấn đề đặt ra bây giờ là tôi muốn tạo một trang web show video và tin tức thì làm thế nào? Chẵng lẽ sử dụng thể loại post cho cả hai rồi tạo một Metadata cho người dùng chọn mỗi khi đăng bài viết? Điều này là không nên bởi rất khó mở rộng.

Với tình hình như vậy thì Custom Post Type sẽ là từ khóa giải quyết vấn đề này cho bạn đấy.

1. WordPres Custom Post Type là gì?

Custom Post Type trong WordPress là tạo ra một thể loại bài viết mới, như ở bài toan trên thì chúng ta sẽ tạo ra một thể loại tên là video.

Để tạo một Custom Post Type thì chúng ta sử dụng hàm register_post_type() và đưa nó vào một hook action tên là init.

Ví dụ: Tạo một thể loại Video

Bạn tạo file custom-post-type.php nằm trong thư mục includes và require nó vào file wp-learn.php (xem lại các bài 1, 2 để biết cấu trúc folder).

File wp-learn.php.

Bạn mở file custom-post-type.php lên và nhập vào nội dung sau:

Bạn đăng nhập vào admin thì sẽ thấy một thể loại xuất hiện trong menu như hình sau:

Làm thế nào mà WordPress có thể làm được như vậy? Mình không cần quan tâm đến nó làm như thế nào mà chỉ quan tâm đến cú pháp của hàm register_post_type() thôi 🙂 Chúng ta cùng tìm hiểu hàm này nhé.

2. Hàm register_post_type trong WordPress

Hàm register_post_type dùng để đăng ký một thể loại bài viết và nó có cấu trúc như sau:

Trong đó:

  • $post_type là tên thể loại, với ví dụ trên thì sẽ là video.
  • $args là danh sác các tham số cấu hình cho thể loại này

Tham số $args bao gồm các thông tin chính sau:

  • label: Tên mô tả số nhiều dùng cho vấn đề dịch thuật
  • labels: Mảng này gồm nhiều phần tử và chức năng chung là chỉnh sửa text trên giao diện
    • name: Text hiển thị trên menu chính của thể loại. Ví dụ như Videos.
    • singular_name: Tên của mỗi bài viết, ví dụ với page thì ta gọi là mỗi Page, với post thì ta gọi là mỗi Post.
    • add_new: Text hiển thị thay thế cho từ Add New
    • add_new_item: Tiêu đề h1 của trang Add New.
    • edit_item: Nhãn hiển thị thay thế cho từ Edit Post hoặc Edit Page
    • new_item:  Text hiển thị thay thế cho từ New Post hoặc New page
    • view_item: Text hiển thị thay thế cho chữ cho đường link xem live trong trang edit (phần slug)
    • search_items: Đoạn text cho button Search bài viết trong admin
    • not_found: Câu thông báo hiển thị khi tìm kiếm không ra bài viết.
    • not_found_in_trash: Câu thông báo hiển thị khi không có bài viết nằm trong mục trash.
    • parent_item_colon: Tìm hiểu sau
    • all_items: Text hiển thị link tất cả bài viết trong main menu của Admin
    • archives: Text hiển thị cho Post Archives hoặc page Archives
    • insert_into_item: Text cho Media Iframe button
    • uploaded_to_this_item: Text cho Media Iframe Filter
    • featured_image: Text cho từ Featured Image
    • set_featured_image: Text cho từ Set featured image
    • remove_featured_image: Text cho từ Remove featured image
    • use_featured_image: Text cho từ Use as featured image
    • menu_name: Tên hiển thị trên menu, nếu không truyền vào thì nó lấy giá trị của key name
    • filter_items_list: Text cho thẻ tiêu đề hiển thị ẩn
    • items_list_navigation: Text cho bảng phân trang tiêu đề ẩn
    • items_list: Text cho bảng tiêu đề ẩn
    • name_admin_bar: Text hiển thị menu trong nút +New nằm trên thanh bar trên cùng của giao diện admin. Bạn hãy hover vào New -> sẽ thấy xuất hiện đường link với nội dung là chữ mà bạn truyền vào và đường link sẽ link tới trang Add New.
  • description: Phần mô tả cho thể loại này
  • public: Nếu có giá trị TRUE thì mới hiển thị trên menu. Sẽ có một số thuộc tính kế thừa từ thuộc tính này như exclude_from_searchpublicly_queryableshow_in_nav_menusshow_ui nếu giá trị các thuộc tính này không được thiết lập
  • exclude_from_search: Nếu có giá trị TRUE thì sẽ loại trừ các bài viết ra khỏi kết quả tìm kiếm bên ngoài frontend
  • publicly_queryable: Cấu hình đường dẫn Query String cho trang Search ngoài frontend.
  • show_ui: Nếu có giá trị TRUE thì sẽ hiển thị giao diện trong admin
  • show_in_nav_menus: Nếu có giá trị TRUE thì nó sẽ hiển thị bên trang quản lý menu.
  • show_in_menu: Nếu TRUE thì sẽ hiển thị trong Admin Menu
  • show_in_admin_bar: Nếu có giá trị TRUE thì sẽ hiển thị một đường link trên thanh Admin Menu Bar (menu nằm trên cùng +New -> Tên Menu)
  • menu_position: Vị trí hiển thị menu trên danh sách menu của admin, giá trị truyền vào là số nguyên bắt đầu từ 1.
  • menu_icon: URL đến Icon của menu
  • supports: Một mảng danh sách các metabox sẽ hiển thị trong trang Add New
  • register_meta_box_cb: Đây là một callback function gọi đến một hàm tạo Meta Boxes nào đó.
  • taxonomies: Một mảng các Taxonomies
  • has_archive: Hiển thị bài viết của thể loại này trong mục ngày tháng năm
  • capability_type: Nhóm quyền mà thể loại này kế thừa, là một mảng và tên quyền sẽ được tạo mới với tên là tên bạn truyền vào, ví dụ:
  • capabilities: Nhóm quyền của thể loại này
  • map_meta_cap: Tìm hiểu sau
  • hierarchical: Nếu có giá trị TRUE thì chức năng Attributes của trang sẽ có tác dụng
  • permalink_epmask:
  • rewrite: Cấu hình rewrite URL
  • query_var: Tìm hiêu sau
  • can_export: Cho phép sử dụng tool để export
  • show_in_rest: Hiển thị bài viết thể loại này trong REST API
  • rest_base: Tìm hiểu sau
  • rest_controller_class: Tìm hiểu sau
  • _builtin: Tìm hiểu sau
  • _edit_link: Đường dẫn edit của bài viết, không nên thay đổi thuộc tính này.

Bạn hãy vào đường link này để xem chi tiết hơn vì ở trên mình giải thích có vẻ hơi khó hiểu. Có một giải pháp là bạn vừa cấu hình vừa vào admin để xem kết quả thì sẽ dễ hiểu hơn rất nhiều.

3. Thêm một Post Type mới

Bây giờ chúng ta sử dụng hàm register_post_type để thêm thể loại video nhé.

Tiếp theo bạn nhập nội dung sau vào file custom-post-type.php.

Bạn đăng nhập vào admin thì sẽ thấy giao diện như sau:

Giao diện cũng không khác gì mấy so với phần 1.

Sau khi chạy đoạn code trên thì chúng ta có thêm thể loại video.

4. Lời kết

Custom Post Type là một chức năng khá quan trọng khi bạn lập trình trên WordPress bởi hầu hết các dự án đều phải tạo ra những Post Type mới. Cũng có bạn nói cái này ít sử dụng bởi các bạn sử dụng FW hoặc những plugin khác thì sự thật không phải như vậy, các FW hoặc các plugin đó cũng phải sư dụng cách này để tạo ra những thể loại đó đấy.

Bạn hãy thay đổi các thuộc tính và vào trang Admin để xem kết quả nó thay đổi như thế nào nhé.

Nguồn: freetuts.net

Bài 10: Hiển thị Meta Box – Metadata ngoài frontend

0

Sẵn có bạn hỏi làm thế nào để hiển thị nội dung bài viết ra ngoài frontend thì mình viết luôn bài này để những bạn khác tham khảo luôn.

Trong bài này mình sẽ hướng dẫn lấy dữ liệu ra hai trang đó là trang danh sách bài viết và trang chi tiết, mời các bạn theo dõi.

1. Lấy dữ liệu Metadata ngoài frontend

Ở bài Metadata API mình có giới thiệu một số hàm dùng để lấy nội dung của Metadata đó là các hàm:

  • get_metadata()
  • get_post_meta()
  • get_comment_meta()
  • get_term_meta()
  • get_user_meta()

Trong các hàm đó bạn sẽ truyền ID và Key của metadata muốn lấy và nó sẽ return về giá trị cần lấy.

Ví dụ: Lấy meta data post_link_download của bài post có id = 12

Trường hợp bạn muốn lấy danh sách tất cả các Meta data của bài viết có ID = 12 thì bạn chỉ truyền một tham số $post_id là được.

Lưu ý là trường hợp này nó sẽ return về một mảng chứa các thông tin của Metadata.

Đơn giản, dễ chơi phải ko các bạn 🙂

2. Hiển thị Metadata ở trang danh sách bài viết

Ở trang danh sách bài viết thì ta sử dụng vòng lặp (Loop) dạng như sau:

Lúc này muốn lấy Metadata của mỗi bài viết thì ta chỉ cần đặt nó trong vòng lặp là được. Ví dụ lấy thông tin post_link_downloadvà post_link_demo ở mỗi vòng lặp thì ta làm như sau:

Cách 1: lấy từng key Metadata

Cách 2: Lấy hết key Metadata

3.  Hiển thị Metadata ở trang chi tiết

Cách sử dụng ở trang này cũng chẳng khác gì mấy so với trang danh sách bài viết, cái khác là bạn áp dụng code và truyền tham số ở file single.php thôi 🙂

4. Lời kết

Như vậy là mình đã hướng dẫn các bạn cách sử dụng Meta Box và Metadata ở frontend, đây cũng là một câu hỏi mà nhiều bạn đã hỏi mình nên mình viết luôn cho tiện trả lời, thay vì trả lời nhiều lần thì gửi 1 link là được 🙂

Bài này mình xin dùng ở đây, bài tiếp theo chúng ta sẽ tìm hiểu về Custom Post Type.

Nguồn: freetuts.net

Bài 09: Bốn bước custom Meta Boxes trong WordPress

0

Tới bài thứ chín này thì khái niệm Custom Meta Boxes không còn xa lạ gì nữa phải không các bạn. Nếu đây là bài đầu tiên của bạn trong series này và bạn chưa thực sự hiển về Meta Boxes thì tôi khuyên bạn nên quay lại đọc từ bài thứ nhất vì điều này sẽ giúp bạn có một hệ thống rõ ràng hơn.

Trong bài này mình sẽ hướng dẫn các bạn làm thế nào để tạo một Meta Box chỉ trong bốn bước. Và để tiện cho việc viết bài thì mình sẽ sử dụng Meta Boxes và Metadata để bổ sung link download và link demo cho mỗi bài viết nhé.

  • Link download có tên key là: post_link_download
  • Link demo có tên key là: post_link_demo

# Bước 1: Tạo một Meta Box

Chúng ta sẽ sử dụng hàm add_meta_box() và action add_meta_boxes để thêm một Meta Box vào trong trang edit bài viết. Về chi tiết cách sử dụng hàm này thì mình đã giải thích rất rõ trong bài Custom Meta Boxes – Metadata trong WordPress.

Trước tiên bạn tạo cho tôi một file tên là metabox-three-steps.php nằm trong thư mục includes của plugin, sau đó vào file wp-learn.php xóa nội dung cũ và thay vào đó là đoạn code require file metabox-three-steps.php.

File wp-learn.php.

Ok bây giờ ta sẽ viết code tạo Meta Box. Bạn mở file metabox-three-steps.php lên và nhập vào nội dung sau:

Bây giờ bạn vào admin và sửa một bài viết bất kì thì sẽ thấy một khung có giao diện như sau:

# Bước 2: Hiển thị thông tin trong Meta Box

Bước này khá đơn giản là ta chỉ việc sử dụng hàm get_post_meta() để lấy dữ liệu từ bảng postmeta và show lên cho người dùng nhìn thấy.

Bạn sửa lại hàm show_metabox() trong file metabox-three-steps.php như sau:

Lúc này giao diện sẽ như sau:

# Bước 3: Thực hiện thao tác lưu Meta Box

Bây giờ ta sẽ bắt sự kiện  khi người dùng lưu bài viết thì ta sẽ lưu lại thông tin của Meta Box.

Bạn thêm vào file metabox-three-steps.php một đoạn code như sau:

Bạn chạy lên sau đó nhập dữ liệu và click Lưu thì giao diện dạng như sau:

# Bước 4: Xóa Meta Box khi xóa bài viết

Để tối ưu tài nguyên thì khi xóa một bài viết chúng ta nên xóa luôn các meta này bởi vì nó là dữ liệu dư thừa. Để bắt sự kiện xóa bài viết thì ta sử dụng action delete_post. Bạn mở file metabox-three-steps.php lên và nhập vào nội dung sau:

Vậy là xong, bạn hãy thêm một bài viết và nhập dữ liệu vào đó, sau đó xóa bài viết rồi tự mình vào PHP MyAdmin xem kết quả nhé 🙂

Và đây là toàn bộ code của chúng ta.

# Lời kết

Trên là bốn bước cơ bản để tạo một Meta boxes, với bốn bước đơn giản như vậy bạn đã có thể bổ sung dữ liệu vào các bài viết. Vì chúng ta đang học nên tại bước 4 bạn hãy tự mình vào trong bảng postmeta xem kết quả có xóa không nhé.

Nguồn: freetuts.net