Một trong những file quan trọng nhất của một theme WordPress đó là file functions.php. Đây là một file bắt buộc trong theme và nó sẽ chứa các đoạn code nguồn mà bạn muốn nó luôn được load mỗi khi tải website, tóm lại là toàn bộ code PHP cần thiết trong một theme (ngoại trừ các code hiển thị nội dung) thì sẽ đều được viết vào file này.
Trong bài này, chúng ta sẽ tiến hành khai báo các đoạn code cần thiết trong file functions.php này, cũng như thiết lập một số hằng dữ liệu (constrant) để thiết lập một số dữ liệu quan trọng mà chúng ta sẽ cần sử dụng lại nhiều.
Thiết lập các hằng dữ liệu quan trọng
Trong khi viết code trong file functions.php, chúng ta sẽ dùng đi dùng lại một số đoạn code như get_stylesheet_directory_uri, hoặc khai báo các đường dẫn. Do vậy, chúng ta nên thiết lập trước một số hằng dữ liệu chứa cố định các giá trị đó để có viết thì chỉ cần viết tên hằng ra thôi.
Chúng ta có code ban đầu như sau:
/** @ Thiết lập các hằng dữ liệu quan trọng @ THEME_URL = get_stylesheet_directory() – đường dẫn tới thư mục theme @ CORE = thư mục /core của theme, chứa các file nguồn quan trọng. **/ define( ‘THEME_URL’, get_stylesheet_directory() ); define( ‘CORE’, THEME_URL . ‘/core’ );
Rồi sau này khi bạn làm theme khác, hoặc cải tiến theme thì có thể thêm một số hằng dữ liệu vào để cho phù hợp với nhu cầu của mình, cái quan trọng là mình muốn tạo thói quen này cho các bạn ngay từ bây giờ.

Bây giờ bạn hãy tạo thêm một thư mục trong theme tên là core và tạo một file tên là init.php trong thư mục đó. Tại sao lại tạo thư mục này và file này làm cái gì? Bởi vì như mình đã nói ở đầu bài, là trong bài này mình sẽ hướng các bạn đến việc làm framework theme cho riêng mình luôn, nên thư mục /core sẽ chứa các file code PHP quan trọng trong theme của bạn mà bạn không muốn thay đổi nhiều nếu có nhu cầu tạo child theme. File init.php sẽ có ý nghĩa là load các file PHP đặc thù trong theme mình mà chúng ta sẽ tạo, ví dụ như load các file tạo widget của theme vào, bước này chúng ta sẽ làm sau.
Bạn viết tiếp vào file functions.php như sau để load file init.php.
/** @ Load file /core/init.php @ Đây là file cấu hình ban đầu của theme mà sẽ không nên được thay đổi sau này. **/
require_once( CORE . ‘/init.php’ );
Thiết lập chiều rộng nội dung ($content_width)
Bây giờ, bạn hãy đặt đoạn code này vào file functions.php nhé:
/** @ Thiết lập $content_width để khai báo kích thước chiều rộng của nội dung **/ if ( ! isset( $content_width ) ) { /* * Nếu biến $content_width chưa có dữ liệu thì gán giá trị cho nó */ $content_width = 620; }
Biến $content_width nghĩa là chúng ta sẽ thiết lập chiều rộng tối đa mà phần hiển thị nội dung (không tính sidebar) mà theme được phép sử dụng, đây là một tính năng của theme WordPress. Khi thiết lập biến này, điều đó không có nghĩa là theme của bạn đã có chiều rộng vì ta phải viết CSS nữa. Nhưng việc khai báo như vậy sẽ giúp cho các thành phần hiển thị trong nội dung như các mã nhúng oEmbed, hình ảnh,….sẽ không bị tràn ra ngoài khung nội dung vì nó sẽ dựa theo giá trị $content_width mà hiển thị tối đa.
Hàm thiết lập chức năng của theme
Tiếp tục, chúng ta sẽ tạo một hàm tên gì đó và sẽ có chức năng móc vào cái hook init của WordPress để khởi tạo các chức năng sẽ được theme hỗ trợ, như post format, customizer,…Hãy chèn đoạn sau vào:
/** @ Thiết lập các chức năng sẽ được theme hỗ trợ **/ if ( ! function_exists( ‘marketcode_theme_setup’ ) ) { /* * Nếu chưa có hàm marketcode_theme_setup() thì sẽ tạo mới hàm đó */ function tt_theme_setup() {
} add_action ( ‘init’, ‘tt_theme_setup’ );
}
Điều này có nghĩa là, hàm marketcode_theme_setup() sẽ được tạo mới nếu máy chủ kiểm tra chưa có hàm đó tồn tại. Sau đó, hàm này sẽ được móc vào action hook init của WordPress để nó sẽ được thực thi sau khi WordPress đã load xong trang.
Comments (0)