Child Themes là gì? Cách tạo Child Themes trong Worpdress

12/06/2014
518 Views
29 Comments

Trước nay mình đã từng tìm hiểu Child Themes là gì và dùng Child Themes để làm gì trong một thời gian dài, nhưng vẫn chưa có kết quả. Ngày hôm nay mình đã tìm được câu trả lời cho mình và mình cũng muốn chia sẻ nó cho các bạn đang tìm hiểu nó. Đồng thời mình viết bài này để ghi nhớ, khi cần thiết mình sẽ có cái để ngâm cứu lại :D. Kiến thức mình chia sẻ ở bài viết này có thể hiểu là kiến thức wordpress cơ bản, nếu bạn cần tìm hiểu về Child Themes sâu hơn thì bạn có thể đọc bài viết này tại website của wordpress.

Child Themes là gì?

Child theme for wordpress

Cấu trúc của Child theme
1: Thư mục theme gốc (theme cha)
2: Thư mục child theme

Child theme trong wordpress là theme được kế thừa các chức năng và các thuộc tính của một theme khác và theme khác đó được gọi là theme cha. Child theme cho phép bạn chỉnh sửa hoặc thêm một chức năng nào đó vào theme cha.

Tại sao phải dùng Child Themes?

Nếu bạn chỉnh sửa một theme theo cách thông thường thì khi theme đó được cập nhật, tất cả những chỉnh sửa của bạn sẽ bị mất hết. Chính vì thế bạn cần phải sử dụng một child theme, bạn viết code chỉnh sửa vào child theme và khi theme cha được cập nhật thì những gì bạn đã chỉnh sửa trước đó sẽ không ảnh hưởng gì.

Tạo Child Themes đơn giản

Bước 1: Tạo một thư mục bên trong thư mục chứa theme (mặc định là wp-content/themes) và sẽ sử dụng thư mục này để làm child theme. Bạn đặt tên nó theo ý của bạn. Để khi chỉnh sửa bạn nên đặt tên thư mực với “-child” ở cuối, để biết đây là child theme của theme nào.
Nhìn vào hình ảnh của tôi, bạn sẽ thấy tôi có theme “hueman-child”. Vâng, nó chính là child theme của theme gốc hueman.

Bước 2: Trong thư mục của child theme, bạn tạo một file css với tên style.css. Nội dung file style.css bạn viết theo cấu trúc bên dưới.

/*
 Theme Name:   Hueman Child
 Theme URI:    https://thanhthai.org
 Description:  Theme con của Hueman
 Author:       Thái Dương
 Author URI:   https://thanhthai.org
 Template:     hueman
 Version:      1.0.0
*/
@import url("../hueman/style.css");

/* Bạn viết code css vào bên dưới dòng này
-------------------------------------------------------------- */

Bạn cần chú :

Dòng số 7: Là tên của thư mục theme gốc. Ở ví dụ trên, thư mục theme gốc là hueman.

Dòng số 10 là đường dẫn đến file style.css của theme cha.

Bạn phải viết code css cho website của bạn dưới dòng @import url(“../hueman/style.css”); , nếu viết bên trên thì website của bạn không còn mang tính kế thừa của theme gốc nữa.

Child Theme hoạt động như thế nào?

Bạn active child theme theo cách active theme thông thường: Đăng nhập Administration Panels > Appearance > Themes. Bạn sẽ nhìn thấy child theme vừa tạo. Bấm Activate.

Active child theme wordpress

Active child theme wordpress

Sau khi child theme được active thì nó sẽ gọi và sử dụng các file trong thư mục child theme (nhìn ví dụ trên thì nó sẽ gọi file stye.css trong thư mục hueman-child để sử dụng) Trong quá trình sử dụng, nó nếu trong thư mục child theme không có các file cần thiết (ví dụ như funcitons.php, thư mục images) thì hệ thống wordpress sẽ tự động sử dụng bên thư mục theme gốc (là thư mục hueman). Nói tóm lại là wordpress theme sẽ ưu tiên child theme trước, nếu trong child theme thiếu cái gì thì nó sẽ sử dụng bên theme gốc.

Lưu ý

  • Không được xóa hay đổi tên thư mục theme gốc (theme cha)
  • Muốn tùy chỉnh file nào bạn chỉ cần copy từ bên theme gốc sang thư mục child theme.
  • Khi viết css phải luôn viết dưới dòng @import

Tạo child theme bằng plugin

  • http://wordpress.org/plugins/child-themify/
  • http://wordpress.org/plugins/orbisius-child-theme-creator/
Child Themes là gì? Cách tạo Child Themes trong Worpdress
3 (60%) 2 votes

Hosting nên dùng

29 bình luận

  1. sau khi tạo child theme thành công thì file style.css ở thư mục gốc hoạt động, giờ muốn ghi đè các file *.css ở trong thư mục childthem/css/ thì làm sao ạ.

    Reply
    • Vậy nghĩa là trong file style.css của child theme bạn ko tùy chỉnh gì sao? Nếu vậy thì ko cần tạo child theme :p.
      Như mình đã nói ở trên, trong thư mục child theme có những file nào thì nó sẽ được ưu tiên sử dụng trong child theme trước, thiếu file nào thì nó sẽ lấy bên theme gốc (theme cha) để dùng. Ý bạn là ko muốn các file child-theme/*.css hoạt động, vậy thì bạn chỉ cần không copy các file *.css bên thư mục theme gốc sang là đc.

      Reply
        • Dùng code luôn 🙂 Code đây nhé.
          <form onsubmit=”window.open(‘http://feedburner.google.com/fb/a/mailverify?uri=Thaidt’, ‘popupwindow’, ‘scrollbars=yes,width=550,height=520’);return true” target=”popupwindow” method=”post” action=”http://feedburner.google.com/fb/a/mailverify” id=”femail”><p>Enter your email address:</p><p><input type=”text” name=”email” id=”nhapemail”></p><input type=”hidden” name=”uri” value=”Thaidt”><input type=”hidden” value=”en_US” name=”loc”><input type=”submit” value=”Subscribe” id=”xacnhan”></form>

          ĐÂy là CSS.
          form#femail {
          background: none repeat scroll 0 0 #357212;
          color: #ffffff;
          font-weight: bold;
          padding: 10px;
          text-align: center;
          }
          Thay id bằng id fedd của bạn nhé

          Reply
          • Mình lấy cái trên bỏ vào thì nó bị ra mấy khung nhập chứ ko ra như bạn, còn cái css để làm gì thế

          • Bạn bỏ nó vào đâu?
            CSS để trang trí cho cái khung nhập đó :D. Nhờ nó mà bạn mới có đc cái giao diện màu xanh giống của mình

        • <a onclick=”window.open(‘https://thanhthai.org/host/a2hosting’); s=prompt(‘Sử dụng coupon giảm giá bên dưới khi thanh toán:’,’BHSCODE’)” target=”_self” style=”color:#FFFFFF;background-color:#da2b06;border-color:#ae2205;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px” class=”su-button su-button-style-default” href=”#”><span style=”color:#FFFFFF;padding:6px 16px;font-size:13px;line-height:20px;border-color:#e56b51;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;text-shadow:none;-moz-text-shadow:none;-webkit-text-shadow:none”><i style=”font-size:13px;color:#FFFFFF” class=”fa fa-bookmark”></i> Click để lấy mã giảm giá 51%</span></a>
          Lọc bớt các cái ko cần thiết nhé. Nó quan trọng chỉ ở chỗ onclick thôi 😀

          Reply
          • mình thử đoạn mã này thì nó ko hiện ra popup mà này sang link mà mình thay vào luôn

  2. Hay lắm bác. Mình chưa từng làm child theme. Sử dụng thì từng dùng qua. Từ lúc dùng WordPress đến giờ mình dùng Framework Hybrid, mình toàn phát triển từ Base theme lên.

    Mình xin bổ sung một tí lưu ý, theme ban đầu phải cung cấp các hook thì child theme mới dễ dàng tùy biến. Tùy theme mới có thể làm child theme được. Không thì làm child theme rất khó khăn.

    Reply
  3. thank tác giả đã chia sẻ. mình cũng đang nghiên cứu làm cái Framework cho riêng mình chứ mỗi lần thiết kế lại web kiểu này vất vả quả 🙂

    Reply
  4. Chào bạn có thể huớng dẫn mình làm menu mobile như của bạn không, nó rất đẹp cảm ơn bạn truớc nha

    Reply

Comment của bạn

Mình rất vui khi bạn đã quyết định để lại comment. Chú ý tất cả comment đều được kiểm duyệt cẩn thận nên đừng cố spam hoặc quảng cáo. Hãy dùng tên của bạn khi comment, không sử dụng keyword trong ô Name. Xin cảm ơn.