Tổng hợp các function thường dùng trong lập trình Theme WordPress
Các Hàm Thường Dùng Trong Lập Trình Theme WordPress
Khi xây dựng theme WordPress từ đầu, việc nắm chắc các hàm core là yêu cầu tối thiểu. Không phải vì chúng phức tạp, mà vì chúng xuất hiện ở hầu hết mọi file template và quyết định trực tiếp đến tính tương thích, bảo mật, và khả năng mở rộng của giao diện. Bài viết này sẽ tổng hợp các nhóm hàm thường xuyên sử dụng trong lập trình WordPress.
1. Hàm Lấy Thông Tin Website
bloginfo() và get_bloginfo()
Đây là cặp hàm dùng để truy xuất thông tin cơ bản của website được cấu hình tại Settings > General.
Điểm khác biệt cốt lõi:
bloginfo()— echo trực tiếp giá trị ra màn hìnhget_bloginfo()— return giá trị, dùng khi cần lưu vào biến hoặc xử lý logic
Các tham số thường dùng:
bloginfo('name') // Tên website
bloginfo('description') // Tagline / mô tả website
bloginfo('url') // URL trang chủ
bloginfo('siteurl') // URL được cấu hình trong Settings
bloginfo('wpurl') // URL cài đặt WordPress
bloginfo('admin_email') // Email quản trị
bloginfo('charset') // Kiểu encoding, mặc định UTF-8
bloginfo('language') // Ngôn ngữ hiện tại
bloginfo('version') // Phiên bản WordPress đang chạy
bloginfo('html_type') // Content type, mặc định text/html
bloginfo('stylesheet_url') // Đường dẫn đến style.css của theme
bloginfo('stylesheet_directory') // Thư mục theme hiện tại
bloginfo('rss_url') // RSS 0.92 feed URL
bloginfo('rss2_url') // RSS 2.0 feed URL
Ví dụ thực tế:
<h1><?php bloginfo('name'); ?></h1>
<p><?php bloginfo('description'); ?></p>
Cách làm này giúp theme linh động hoàn toàn — khi admin thay đổi tên website trong Settings, giao diện tự động cập nhật mà không cần sửa code.
2. Hàm Nhúng Các File Template
WordPress khuyến khích chia theme thành nhiều file nhỏ, mỗi file đảm nhận một khu vực riêng. Các hàm dưới đây dùng để kết nối các file đó lại với nhau.
get_header(), get_footer(), get_sidebar()
get_header(); // Gọi header.php
get_footer(); // Gọi footer.php
get_sidebar(); // Gọi sidebar.php
Các hàm này đều nhận tham số dạng slug để gọi file con:
get_header('campaign'); // Gọi header-campaign.php
get_sidebar('shop'); // Gọi sidebar-shop.php
get_template_part()
Dùng để nhúng các component tùy chỉnh, đặc biệt hữu ích khi một đoạn markup được tái sử dụng ở nhiều nơi.
get_template_part('template-parts/content', 'single');
// Gọi file: template-parts/content-single.php
get_template_part('components/card');
// Gọi file: components/card.php
Đây là cách tiếp cận chuẩn được khuyến nghị trong WordPress Developer Resources — giúp codebase dễ đọc, dễ maintain, và tránh lặp code.
3. Hook wp_head() và wp_footer()
Đây là hai hàm bắt buộc phải có trong mọi theme WordPress. Thiếu một trong hai, các plugin sẽ không thể inject script/style đúng cách, và một số tính năng core sẽ bị vô hiệu hóa.
wp_head()
Đặt ngay trước thẻ đóng </head> trong header.php:
<?php wp_head(); ?>
</head>
Hàm này là điểm hook để WordPress và các plugin chèn: meta tags, stylesheet, tracking scripts (Google Analytics, Facebook Pixel), và dữ liệu schema.
wp_footer()
Đặt ngay trước thẻ đóng </body> trong footer.php:
<?php wp_footer(); ?>
</body>
Ngoài việc nhúng JavaScript ở cuối trang để tối ưu performance, wp_footer() còn chịu trách nhiệm render Admin Bar khi người dùng đang đăng nhập — thanh công cụ cho phép chỉnh sửa nhanh trực tiếp từ frontend.
4. Conditional Tags
Conditional tags là nhóm hàm trả về true hoặc false, dùng để kiểm tra context hiện tại của trang đang được render. Đây là cơ sở để xây dựng logic hiển thị thông minh trong theme.
Nhóm kiểm tra loại trang
| Hàm | Mô tả |
|---|---|
is_front_page() | Trang chủ được chỉ định trong Settings > Reading |
is_home() | Trang hiển thị danh sách bài viết (blog index) |
is_single() | Trang chi tiết post type dạng non-hierarchical |
is_page() | Trang thuộc post type Page |
is_singular() | Bao gồm is_single(), is_page(), is_attachment() |
is_archive() | Trang archive của bất kỳ taxonomy nào |
is_category() | Trang archive của category |
is_tag() | Trang archive của tag |
is_tax() | Trang archive của custom taxonomy |
is_author() | Trang archive của tác giả |
is_search() | Trang kết quả tìm kiếm |
is_404() | Trang lỗi 404 |
is_attachment() | Trang hiển thị media attachment |
is_feed() | Trang RSS feed |
is_paged() | Trang đang được phân trang |
is_preview() | Đang xem bản preview của bài viết nháp |
Nhóm kiểm tra trạng thái bài viết
| Hàm | Mô tả |
|---|---|
is_sticky() | Bài viết được đánh dấu Sticky |
in_category() | Bài viết thuộc một category cụ thể |
has_tag() | Bài viết có gắn tag |
has_term() | Bài viết có chứa term của taxonomy bất kỳ |
comments_open() | Tính năng comment đang được bật |
in_the_loop() | Đang trong vòng lặp WordPress Loop |
Nhóm kiểm tra hệ thống và người dùng
| Hàm | Mô tả |
|---|---|
is_admin() | Đang truy cập trang quản trị |
is_user_logged_in() | Người dùng đã đăng nhập |
is_super_admin() | Người dùng là Super Admin |
is_child_theme() | Theme hiện tại là Child Theme |
is_multisite() | WordPress đang chạy ở chế độ Multisite |
is_main_site() | Đây là website chính trong mạng Multisite |
is_page_template() | Page đang dùng Page Template cụ thể |
wp_is_mobile() | Thiết bị truy cập là mobile |
is_rtl() | Website đang dùng ngôn ngữ đọc từ phải sang trái |
username_exists() | Kiểm tra username có tồn tại không |
is_plugin_active() | Plugin đã được kích hoạt hay chưa |
Nhóm kiểm tra Sidebar và Widget
| Hàm | Mô tả |
|---|---|
is_active_sidebar() | Sidebar đang được sử dụng |
is_active_widget() | Widget đã được gán vào sidebar |
is_dynamic_sidebar() | Sidebar đã có widget chưa |
Ví dụ ứng dụng thực tế:
// Chỉ hiển thị banner quảng cáo ở trang bài viết chi tiết
if ( is_single() ) {
get_template_part('components/ad-banner');
}
// Hiển thị sidebar khác nhau tùy context
if ( is_archive() ) {
get_sidebar('archive');
} elseif ( is_single() ) {
get_sidebar('post');
} else {
get_sidebar();
}
// Ẩn widget nếu đang xem trên mobile
if ( ! wp_is_mobile() ) {
dynamic_sidebar('desktop-sidebar');
}
Tổng Kết
Việc am hiểu và sử dụng linh hoạt các core function không chỉ đơn thuần là kỹ năng viết code, mà là chìa khóa để bạn hoàn toàn làm chủ kiến trúc của WordPress. Một nền tảng kiến thức vững chắc về các hàm này sẽ giúp bạn tối ưu hóa số lượng truy vấn vào cơ sở dữ liệu, từ đó giảm tải đáng kể cho hosting/server và tăng tốc độ tải trang.


0 bình luận
Để lại bình luận
Bạn phải đăng nhập để gửi bình luận.