Tìm hiểu Parent Theme và Child Theme

Bài này là phần 13/15 trong series WordPress cơ bản

Dùng một WordPress Theme bản quyền sẽ có được rất nhiều lợi ích. Nếu một phiên bản mới được phát hành, nó sẽ khắc phục các vấn đề như tương thích với trình duyệt hoặc thêm các tính năng mới của WordPress. Tuy nhiên đến một lúc nào đó bạn sẽ muốn bắt tay vào việc thiết kế, thêm tính năng, chỉnh sửa cấu trúc của theme. Nếu bạn chỉnh sửa cấu trúc, giao diện trang web đang dùng, mỗi khi nâng cấp lên phiên bản mới các tùy chỉnh đó sẽ bị mất và bạn sẽ phải chỉnh sửa lại. Việc này khá phiền phức và mất công. Nhưng may mắn thay, Child Themes là một giải pháp hoàn hảo cho việc vừa có thể nâng cấp khi phiên bản WordPress Theme mới được phát hành mà vẫn giữ lại được các tính năng tùy chỉnh của bạn.

Trong bài viết này tôi và bạn sẽ cùng tìm hiểu khái niệm Child Theme (giao diện, chủ đề con) là gì và làm thế nào để tạo một Child Theme từ Parent Theme (giao diện, chủ đề cha) và cách sử dụng tối đa các lợi thế đó.

Child Theme là gì?

Child Theme là một theme kế thừa các tính năng và định dạng kiểu từ một theme khác được gọi là Parent Theme. Child Theme là một cách tuyệt vời để tùy biến, chỉnh sửa một theme có sẵn.

Tại sao lại dùng Child Theme

Như đã trình bày ở trên, các lý do để sử dụng Child Theme là:

  • Nếu bạn tùy biến, chỉnh sửa trực tiếp trên Parent Theme, khi có bản cập nhật mới các tùy biến đó sẽ bị mất. Bằng cách sử dung Child Theme, bạn có thể giữ lại các thay đổi của mình mà vẫn có được các tính năng mới của bản cập nhật.
  • Sử dụng Child Theme giúp bạn tiết kiệm rất nhiều thời gian trong việc phát triển theme.
  • Dùng Child Theme là cách tốt nhất để học phát triển WordPress Theme.
  • Bạn muốn có một WordPress Theme độc đáo, không đụng hàng.

Tùy chỉnh Theme với Child Theme

Một WordPress Theme là tập hợp của nhiều template, stylesheet, hình ảnh và tập tin JavaScript. Theme sẽ kiểm soát bố cục và thiết kế trang web của bạn khi nó hiển thị trước mắt người dùng. Khi một theme được thiết lập như một Parent Theme, nó sẽ cho phép bạn thay đổi có chọn lọc kiểu dáng, bố cục và chức năng đối với Child Theme.

Cách nhanh nhất để hiểu khái niệm child theme là thông qua các ví dụ. Trong bài viết này bạn sẽ học được cách tạo ra một Child Theme đơn giản bằng cách chỉnh sửa Parent Theme.

Theme mặc định kèm theo WordPress có một theme tên là Twenty Seventeen. Đây là một theme tương đối đẹp, bắt mắt, tương thích với tất cả các kích cỡ màn hình của các thiết bị. Theme này nhìn giống như hình bên dưới.

Twenty Seventeen

Hình 1: Theme mặc định Twenty Seventeen của WordPress

Vì bạn đã có sẵn giao diện Twenty Seventeen nên nó sẽ là một đối tượng tuyệt vời để bạn tạo ra một Child Theme.

Giống như các WordPress Themes khác, Child Theme cũng cần phải được nằm bên trong thư mục /wp-content/themes. Vì vậy bước đầu tiên để tạo ra một Child Theme là tạo một thư mục để chứa nó. Đăng nhập vào tài khoản hosting của bạn sau đó vào thư mục /wp-content/theme và tạo một thư mục có tên là twentyseventeen-child

Để đăng ký thư mục twentyseventeen-child như là một thư mục chứa WordPress Theme và biến nó thành Child Theme của theme Twenty Seventeen, bạn cần tạo một tập tin style.css và thêm vào các tùy chỉnh thích hợp cho header của theme.

Để làm việc này bạn nhập đoạn code bên dưới vào một trình biên tập như Notepad chẳng hạn. Sau đó lưu lại với tên style.css.

/*
Theme Name: Twenty Seventeen Child
Description: My beautifull child theme
Author: Thanh Ho
Author URI: https://thanh1986t.com
Version: 1.0
Template: twentyseventeen
*/

Thường thì bạn sẽ tìm thấy các tiêu đề bên dưới trong một WordPress Theme

  • Theme Name: Tên của theme mà bạn có thể nhìn thấy được trong back end của WordPress.
  • Author: Tên tác giả của theme.
  • Author URI: Địa chỉ blog/website của người tạo ra Child Theme.
  • Version: phiên bản của theme.
  • Template: Child Theme được tạo ra từ Parent Theme nào? Đây là tên của Parent Theme.

Giờ bạn hãy kích hoạt Twenty Seventeen Child theme như các theme bình thường khác. Bạn sẽ cảm thấy ngạc nhiên vì Child Theme hiển thị không giống Parent Theme chút nào đúng không? Điều này cũng không có gì là lạ cả vì Child Theme đã dùng tập tin style.css riêng thay vì dùng tập tin style.css của Parent Theme. Mà lúc này tập tin style.css của Child Theme lại trống rỗng.

Bạn có thể sao chép và dán nội dung từ tập tin style.css của Parent Theme sang tập tin style.css của Child Theme. Nhưng cách làm này sẽ không giúp cho bạn phát huy hết các lợi thế vốn có của Child Theme.

Áp dụng định dạng kiểu từ parent theme

Một trong những điều tuyệt vời của CSS là nó cho phép bạn ghi đè lên nhau. Nếu bạn liệt kê một quy tắc hai lần thì nó sẽ ưu tiên áp dụng quy tắc cuối cùng.

Ví dụ:

a {
color: red;
}
a {
color: blue;
}

Trên đây là ví dụ đơn giản nhất để minh họa cho những điều tôi đã trình bày. Vùng chọn đầu tiên có nghĩa là tất cả các liên kết đều có màu đỏ, ngược lại vùng chọn thứ hai nói rằng tất cả các liên kết đều có màu xanh. Với CSS vùng chọn thứ hai sẽ được ưu tiên. Vì vậy tất cả các liên kết sẽ có màu xanh.

Tận dụng đặc tính này của CSS, bạn có thể kế thừa các định dạng kiểu từ Parent Theme và chỉnh sửa nó bằng cách áp dụng tính năng ghi đè này. Nhưng làm thế nào bạn có thể tải tập tin style.css để có thể kế thừa các định dạng kiểu từ nó?

Thật may là CSS có một tính năng tuyệt vời giúp bạn có thể thực hiện được việc đó một cách dễ dàng. Hãy thêm đoạn mã bên dưới vào tập tin style.css của Twenty Seventeen Child theme.

@import url (‘../twentyseventeen/style.css’);
  • @import: Mã này nói cho trình duyệt biết để tải một tập tin style.css.
  • url: Mã này dùng để xác định giá trị là một đường dẫn, không phải là giá trị bình thường khác.
  • (‘../twentyseventeen/style.css’): Đường dẫn đến tập tin style.css mà bạn muốn tải.

Tùy chỉnh định dạng kiểu của parent theme

Bạn đã cài đặt Child Theme giống với Parent Theme rồi. Giờ là lúc bạn có thể thêm các định dạng mới cho Child Theme của mình. Ví dụ bên dưới sẽ cho bạn thấy cách thức hoạt động của việc tùy chỉnh và định dạng kiểu cho tiêu đề H1, H2, H3 từ chữ thường thành chữ in.

/*
Theme Name: Twenty Seventeen Child
Description: My beautifull child theme
Author: Thanh Ho
Author URI: https://thanh1986t.com
Version: 1.0
Template: twentyseventeen
*/
@import url (“../twentyseventeen/style.css”);
h1, h2, h3 {
text-transform: uppercase;
}

Hình bên dưới sẽ cho bạn thấy Child Theme sẽ trông như thế nào khi áp dụng đoạn code trên. Các tiêu đề của bài viết sẽ biến thành in hoa.

child theme style after modify css

Hình 2: Tiêu đề của Theme Twenty Seventeen biến thành in hoa

Như bạn đã thấy, chỉ với vài mã lệnh css, bạn đã có thể thêm mới một Child Theme và tùy chỉnh một số tính năng có sẵn trong tập tin style.css. Bạn có thể nhanh chóng và dễ dàng tùy chỉnh các tính năng có sẵn mà không cần phải chỉnh sửa trực tiếp trên Parent Theme.

Khi có bản cập nhật mới cho Parent Theme, bạn có thể cập nhật các tính năng mới cho nó. Nhưng bạn sẽ không phải mất công tùy chỉnh các tính năng mới cho Child Theme. Bởi vì bạn thực hiện việc tùy chỉnh trên Child Theme chứ không phải Parent Theme.

Các tùy chỉnh phức tạp hơn cũng được thực hiện tương tự.

Sử dụng hình ảnh trong thiết kế child theme

Một số theme sử dụng hình ảnh trong việc thiết kế để đảo bảo tính thẩm mỹ. Các hình ảnh này nằm trong thư mục image của theme.

Nếu Parent Theme có một tập tin style.css riêng thì Child Theme cũng có một thư mục chứa các hình ảnh của nó.

Sử dụng hình ảnh cho child theme trong tập tin style.css của nó

Để sử dụng hình ảnh cho Child Theme bạn chỉ cần thêm hình ảnh vào thư mục image và khai báo nó trong tập tin style.css.Bạn làm theo các bước sau:

  1. Tạo một thư mục images bên trong Child Theme
  2. Thêm một hình ảnh bạn muốn sử dụng vào thư mục images
  3. Thêm các khai báo cần thiết trong tập tin style.css của Child Theme
Theme Name: Twenty Seventeen Child
Description: My beautifull child theme
Author: Thanh Ho
Author URI: https://thanh1986t.com
Version: 1.0
Template: twentyseventeen
*/
@import url (‘../twentyseventeen/style.css’);
body {
background: url(‘images/body-bg.png’);
}
.site-content-contain {
background-color: transparent;
}

Sau khi lưu lại tâp tin style.css, bạn hãy làm tươi lại trình duyệt và xem thành quả của mình.

Thay đổi hình nền cho Child Theme

Hình 3: Đặt hình nền cho theme Twenty Seventeen

Các hình ảnh nằm trong thư mục images không chỉ được sử dụng làm hình nền mà nó còn được dùng cho nhiều mục đích khác. Bạn có thể dễ dàng tải hình ảnh lên thư mục images của Child Theme thậm chí là ngay cả khi hình ảnh đó không nằm trong thư mục images của Parent Theme. Bạn có thể thực hiện các thao tác đó mà không lo làm hư hỏng Parent Theme.

Trong phần chân trang của theme Twenty Seventeen, bạn có thể thêm logo WordPress vào phía bên trái của cụm từ  Proudly powered by WordPress như hình bên dưới. Theo mặc định logo này không nằm trong phần chân trang của theme Twenty Seventeen.

Để làm được điều đó, bạn chỉ cần chuẩn bị một hình ảnh kích cỡ khoảng 20x20px có nền trong suốt, sau đó thêm đoạn code sau vào tập tin style.css.

.site-info {
background: url(images/wp-blue.png) no-repeat left top;
padding: 0 20px;
}

Làm tươi trình duyệt và xem kết quả.

site info icon

Hình 4: Thêm biểu tượng WordPress vào trước Proudly powered by WordPress

Ở ví dụ tiếp theo, tôi sẽ thêm logo WordPress vào trước tiêu đề của wiget ở sidebar. Bởi vì logo này đã nằm trong thư mục images (ở ví dụ phía trên) nên bạn chỉ cần thêm các tùy chỉnh cho thêm trong tập tin style.css. Đoạn mã như sau:

/*
Theme Name: Twenty Seventeen Child
Description: My beautifull child theme
Author: Thanh Ho
Author URI: https://thanh1986t.com
Version: 1.0
Template: twentyseventeen
*/
@import url (‘../twentyseventeen/style.css’);
.widget-title {
background: url (images/wp-blue.png) no-repeat left top;

pading: 20px 30px;
}

Lưu tập tin lại và làm tươi trình duyệt. Bạn sẽ thấy được thành quả tuyệt vời mà mình vừa tạo.

Tạo biểu tượng cho widget title

Hình 5: Thêm biểu tượng WordPress cho các tiêu đề của Widget

Sửa đổi cấu trúc Child Theme

Ở phần trên, tôi đã trình bày cách sử dụng Child Theme để chỉnh sửa tập tin style.css có sẵn. Bạn có thể sử dụng các tính năng rất mạnh mẽ của ngôn ngữ CSS sửa đổi cấu trúc, bố cục của Child Theme.

Ví dụ này chỉ là một trong những ví dụ điển hình về sự mạnh mẽ của child theme. Child theme không chỉ ghi đè lên tập tin style.css của parent theme, child theme còn có thể ghi đè lên các tập tin template khác.

Các template .php là các tập tin mà WordPress dùng để hiển thị trang web của bạn. Chế độ xem là các loại nội dung được chọn để hiển thị. Ví dụ chế độ xem home (trang chủ), categories archive (chuyên mục được lưu trữ), post (bài viết), page (trang).

Các tập tin template phổ biến là index.php, archive.php, single.php, page.php, attachment.php, và search.php.

Có thể bạn sẽ tự hỏi mục đích của việc chỉnh sửa các template của parent theme là gì? Tất nhiên là việc gì cũng có nguyên nhân của nó.

Mặc dù việc chỉnh sửa mã lệnh CSS của tập tin style.css có thể giúp bạn thiết kế, làm đẹp trang web của mình nhưng nó không cho phép bạn thêm mới nội dung, sửa đổi cấu trúc trang web, hoặc thay đổi tính năng của theme. Vì vậy muốn có được các tính năng đó bạn cần phải chỉnh sửa các tập tin template của parent theme.

Ghi đè lên tập tin của Parent theme

Khi cả Parent Theme và Child Theme có cùng chung một template thì template của Child Theme được ưu tiên sử dụng trước. Quá trình thay thế template gốc của Parent Theme này được gọi là overriding (ghi đè).

Mặc dù quá trình càn thiệp đối với mỗi template của Parent Theme có thể sẽ làm ảnh hưởng đến mục đích sử dụng của Child Theme, nhưng đôi khi bạn phải làm như vậy để tạo ra kết quả theo mong muốn của mình.

Cách đơn giản nhất để tùy chỉnh các template trong một Child Theme là sao chép các template từ thư mục cài đặt Parent Theme sang thư mục chứa Child Themes. Sau khi sao chép các tập tin, bạn có thể tiến hành tùy chỉnh nó và xem thành quả của mình thông qua Child Theme.

Thêm một Template mới

Một Child Theme có thể ghi đè lên các template của Parent Theme và nó cũng có thể tạo ra một template mới hoàn toàn ngay cả khi template này không hề tồn tại trong Parent Theme. Mặc dù có thể bạn không cần thiết phải làm điều này vì các Parent Theme đã cung cấp hầu như đầy đủ các template cần thiết rồi. Nhưng tìm hiểu việc này có thể giúp bạn nâng cao kỹ năng trong việc thiết kế website của mình.

Kỹ thuật này tỏ ra rất hiệu quả nhất là đối với các page templates. Theme Twenty Seventeen có một page template với tên gọi là page.php. Template này tạo ra bố cục full-width cho nội dung, loại bỏ sidebar như hình phía bên dưới.

sample page full width

Hình 6: Bố cục full-width của theme Twenty Seventeen

Cách bố trí này được thiết lập để bạn có thể tập trung vào việc đọc nội dung, không bị phân tâm bởi các nội dung khác trên thanh bên.

Đôi khi bạn muốn có một bố cục full-width (toàn chiều rộng) để chèn các video, thêm diễn đàn hoặc chèn các nội dung khác đòi hỏi hoạt động tốt ở chế độ full-width. Nhưng cũng có những lúc bạn muốn hiển thị một trang web tĩnh với thanh bên.

Nếu bạn muốn tùy chỉnh page template này, bạn có thể tạo ra một page template mới cũng có tên là page.php trong thư mục cài đặt Child Theme. Sau đó thêm các mã lệnh để nó hiển thị thanh bên (get_sidebar())

Sau khi tạo mới page template cho Child Theme, nó sẽ được WordPress sử dụng thay vì phải sử dụng template page.php của Parent Theme như trước kia.

Xóa template

Có thể bạn sẽ hỏi rằng tại sao lại phải xóa template của Parent Theme? Đó là một câu hỏi rất hay. Tuy nhiên tôi không thể sử dụng Theme Twenty Seventeen để làm sáng tỏ vấn đề này. Vì nó không cung cấp các ví dụ cụ thể. Chúng ta chỉ có thể dùng trí tưởng tượng của mình để trả lời cho câu hỏi trên mà thôi.

Ví dụ bạn đang tạo ra một Child Theme từ một Parent Theme có sẵn. Child Theme này được thiết kế tốt và tạo ra một cách nhanh chóng. Giao diện Child Theme và tính năng của nó hoạt động một cách chính xác như bạn mong muốn, tuy nhiên vẫn tồn tại một vấn đề là:

Child Theme này có một template tên là home.php. Đây là một template cung cấp các tính năng tùy chỉnh cho trang chủ của bạn. Có nhiều loại trang chủ cho các thể loại blog/website khác nhau. Vì bạn tạo Child Theme cho blog nên nếu xóa template home.php mọi thứ sẽ hoạt động trơn tru, hoàn hảo hơn.

Nhưng bạn không thể xóa template home.php một cách trực tiếp được vì nó sẽ làm cho hoạt động của Theme bị ảnh hưởng. Vì thế bạn cần phải sử dụng một số thủ thuật cần thiết.

Thay vì xóa hoặc ghi đè lên tập tin home.php, bạn chỉ cần sao chép và dán code của tập tin index.php vào tập tin home.php của Child Theme. Mặc dù cách tiếp cận này tương đối hiệu quả nhưng vẫn có một cách khác tối ưu hơn: Bạn có thể nói với WordPress ưu tiên chạy tập tin index.php.

Bạn chỉ cần thêm dòng mã bên dưới vào tập tin home.php của Child Theme để thay thế home.php bằng index.php

<?php locate_template( array( ‘index.php’ ), true ); ?>

Chức năng của Hàm locate_template là: Ưu tiên sử dụng tập tin index.php của Child Theme trước. Nếu tập tin index.php của Child Theme không được sử dụng, WordPress sẽ sử dụng tập tin index.php của Parent Theme. Thủ thuật này cho ra kết quả tương tự như việc xóa tập tin home.php của Parent Theme.

Chỉnh sửa tập tin function.php

Giống như các tập tin template, Child Theme cũng có các Function Template (functions.php). Không giống như các template khác, function template không thể ghi đè.

Khi cả Parent Theme và Child Theme đều có template functions, cả hai tập tin functions.php của Parent Theme và Child Theme đều được thực thi. Tập tin functions.php của Child Theme sẽ chạy trước, tập tin functions.php của Parent Theme sẽ chạy sau.

Cài đặt này đã được thiết lập một cách có chủ ý, vì nó cho phép Child Theme thay thế các tính năng có trong Parent Theme. Tất nhiên là hai tập tin functions.php này chỉ có thể hoạt động khi được cho phép bằng các cài đặt.

Tập tin functions.php của theme Twenty Seventeen định nghĩa một hàm có tên gọi là  twentyseventeen_setup . Hàm này xử lý các cấu hình của các tùy chọn của theme và kích hoạt các tính năng mở rộng. Child Theme có thể thay thế hàm này để thay đổi cấu hình mặc định và các tính năng của theme.

Đoạn code bên dưới sẽ cho chúng ta thấy được tập tin functions.php cho phép Child Theme thay đổi cấu hình mặc định và các tính năng như thế nào.

if ( ! function_exists( ‘twentyseventeen_setup’ ) ):
function twentyseventeen_setup() {
// removed code
}

endif;

Hàm được khai báo trong mệnh đề If bảo vệ website của bạn trước các sự cố, xung đột code và cho phép Child Theme định nghĩa phiên bản chức năng của riêng nó.

Trong theme Twenty Seventeen, bạn có thể thấy hiệu quả của việc chỉnh sửa chức năng này. Thêm một tính năng mới hỗ trợ xem các bài viết dưới dạng thumbnail vào tập tin functions.php của theme Twenty Seventeen Child bằng đoạn code bên dưới:

<?php
function twentyseventeen_setup() {
add_theme_support( ‘post-thumbnails’ );
}

Kết quả của sự thay đổi này là Child Theme không còn hỗ trợ các tính năng đặc biệt khác của WordPress. Ví dụ như: chỉnh sửa định dạng kiểu, tạo liên kết nguồn cấp dữ liệu tự động…

Ví dụ này cho ta thấy, một Child Theme có thể tạo ra chức năng tùy chỉnh riêng cho mình. Bởi vì các tính năng của Parent Theme được khai báo trong khối lệnh If sẽ được kiểm tra trước.

WordPress cung cấp những thứ cần thiết để bạn có thể dễ dàng tạo ra một Parent Theme. Mặc dù WordPress đã làm hết những công việc khó nhằn nhưng bạn cũng cần phải tuân theo các quy tắc nhất định trong việc tạo ra Parent Theme để nó có thể hoạt động một cách chính xác.

Thuật ngữ stylesheet và template thường được nhắc tới nhiều lần trong các trường hợp khác nhau. Thường thì stylesheet thường được dùng để chỉ tập tin CSS của theme, template được dùng để chỉ các tập tin template của theme.

Nhưng hai thuật ngữ này cũng có ý nghĩa cụ thể khác trong trường hợp sử dụng cho Parent Theme và Child Theme. Bạn cần phải hiểu được sự khác nhau giữa stylesheet và template khi làm việc với Parent Theme và Child Theme.

Nếu một theme đang được kích hoạt mà không phải là Child Theme thì nó sẽ sử dụng cả stylesheet và template của chính mình. Nếu một theme là Child Theme đang được kích hoạt thì nó sẽ sử dụng stylesheet của chính nó và template của Parent Theme.

Lúc đầu, Child Theme chỉ có thể thay thế tập tin style.css của theme. Parent Theme cung cấp các template và mã functions.php. Tuy nhiên trong các phiên bản WordPress về sau, khi tính năng của Child Theme ngày càng được mở rộng thì nó làm cho mọi thứ trở nên mơ hồ.

Ví dụ: bạn có 02 theme là Child Theme và Parent Theme. Đoạn mã bên dưới nằm trong tập tin header.php sẽ tải định dạng kiểu từ tập tin style.css trong theme của bạn:

<link type=”text/css” rel=”stylesheet” media=”all” href=”<?php bloginfo(‘stylesheet_directory’) ?>/reset.css”/>

Hàm bloginfo dùng để in thông tin của blog. Ví dụ này dùng để in đường dẫn URL của thư mục chứa tập tin style.css. Nếu website được lưu trữ tại địa chỉ http://vidu.com và parent theme đang được kích hoạt thì kết quả đoạn mã trên sẽ cho ra là:

<link type=”text/css” rel=”stylesheet” media=”all” href=”http://vidu.com/wp-content/themes/Prent/reset.css”/>

Nếu child theme đang được kích hoạt, thì kết quả sẽ là

<link type=”text/css” rel=”stylesheet” media=”all” href=”http://vidu.com/wp-content/themes/Child/reset.css”/>

Đường dẫn của tập tin style.css lúc này sẽ nằm trong thư mục child theme thay vì parent. Đoạn code này sẽ hoạt động nếu mọi child theme sao chép tập tin reset.css của parent theme nhưng yêu cầu child theme phải thêm các tập tin để có thể hoạt động một cách chính xác không phải là một ý hay.

Vậy đâu là giải pháp cho vấn đề này. Giải pháp tương đối đơn giản. Thay vì sử dụng stylesheet_directory trong hàm bloginfo, chúng ta sử dụng template_directory. Đoạn code sẽ là:

<link type=”text/css” rel=”stylesheet” media=”all” href=”<?php bloginfo(‘template_directory’) ?>/reset.css”/>

Giờ thì tất cả các tập tin của child theme sẽ tải tập tin reset.css của parent theme.

Khi phát triển một WordPress Theme, bạn nên sử dụng template_directory đối với các theme chính, độc lập và sử dụng stylesheet_directory đối với các child theme.

Qua bài viết này bạn đã tìm hiểu được khái niệm Child Theme và cách tạo ra một Child Theme đơn giản từ Parent Theme. Hy vọng bài viết này có thể giúp bạn tạo ra một Child Theme ưng ý.

Nếu bạn thấy bài viết hữu ích đừng quên Like và Share.

Hẹn gặp lại bạn trong các bài viết tiếp theo./.

Bài viết trong Series<< Phần trước: Hướng dẫn tinh chỉnh WordPress ThemesPhần tiếp theo: Tìm hiểu Hệ quản trị nội dung WordPress >>

Đăng ký nhận bài viết mới nhất

Hãy đăng ký nhận tin để nhận được những nội dung thú vị và tuyệt vời!

Để lại bình luận