Công tác chuẩn bị và thiết lập môi trường
Trước khi bắt đầu viết mã, việc thiết lập một môi trường phát triển đúng cách là rất quan trọng. Điều này không chỉ ảnh hưởng đến hiệu suất công việc mà còn liên quan đến sự thuận tiện trong quá trình gỡ lỗi (debugging) và khả năng bảo trì (maintenance) trong tương lai. Bạn cần một môi trường máy chủ cục bộ (local server) để chạy WordPress. Các công cụ phát triển cục bộ chuyên nghiệp như Local by Flywheel, XAMPP hoặc Laragon được khuyến nghị sử dụng. Hãy cài đặt và cấu hình PHP (phiên bản 7.4 trở lên được khuyến nghị), MySQL và một máy chủ web (chẳng hạn Apache hoặc Nginx).
Tiếp theo, hãy tải phiên bản mới nhất của gói cài đặt WordPress về, tạo một trang web mới trên môi trường máy chủ cục bộ của bạn và thực hiện quá trình cài đặt. Hãy nhớ lưu ý đến thư mục gốc (root directory) của trang web đó. Để thuận tiện cho việc biên tập mã nguồn và quản lý phiên bản, chúng tôi khuyên bạn nên sử dụng các trình soạn thảo mã chuyên nghiệp như VS Code hoặc PhpStorm, đồng thời cài đặt các tiện ích bổ sung liên quan đến PHP và WordPress (như các đoạn mã mẫu, công cụ gỡ lỗi, v.v.).
Cuối cùng, bạn cần hiểu rằng điểm khởi đầu tuyệt đối cho một chủ đề WordPress là gì. Một chủ đề cần ít nhất hai tệp tin để được hệ thống nhận diện: một là tệp tin biểu mẫu (style sheet). style.cssMột cái nữa là tệp mẫu trang chủ (homepage template file). index.phpTrên trang web này. /wp-content/themes/ Trong thư mục đó, hãy tạo một thư mục mới cho chủ đề bạn sắp tạo, ví dụ như: my-first-theme。
Tệp tin cốt lõi để tạo chủ đề
### – Tệp định nghĩa thông tin chủ đề
Mã định danh và thông tin mô tả cho mỗi chủ đề đều được cung cấp rõ ràng. style.css Tệp tin nằm trong thư mục tương ứng. Khối ghi chú ở đầu tệp là bắt buộc; WordPress sử dụng nó để đọc thông tin như tên chủ đề, tác giả, mô tả, v.v. của bạn. style.css Tệp tin nên bắt đầu như sau:
/*
Theme Name: 我的第一个主题
Theme URI: https://example.com/my-first-theme/
Author: 你的名字
Author URI: https://example.com/
Description: 这是一个从零开始开发的 WordPress 主题演示。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-first-theme
*/ Text Domain Được sử dụng cho mục đích quốc tế hóa (internationalization), tên tệp này phải trùng khớp với tên thư mục chứa các tài liệu thiết kế (theme folder) của bạn. Tệp này cũng sẽ chứa toàn bộ mã nguồn CSS (Cascading Style Sheets) liên quan đến giao diện trang web của bạn.
Việc xây dựng tệp mẫu cơ bản (basic template files)
Các tệp mẫu kiểm soát giao diện của các trang khác nhau trên trang web. Hãy cùng tạo ra một vài tệp cốt lõi nhất. Đầu tiên là tệp mẫu cho trang chủ. index.phpĐó là mẫu trang quay lại mặc định cho tất cả các trang. Đây là một giải pháp đơn giản nhưng vẫn hoạt động hiệu quả. index.php Nội dung của tệp tin là:
<?php get_header(); ?>
<main>
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// 输出文章内容
the_title( '<h2>', '</h2>' );
the_content();
endwhile;
else :
echo '<p>暂无文章。</p>';
endif;
?>
</main> Đoạn mã này đã đưa vào ba hàm thành phần mẫu (template components) cốt lõi:get_header(), get_sidebar(), get_footer()Điều này có nghĩa là bạn cần tạo ra những thứ tương ứng (những thành phần, tài liệu, chức năng, v.v.) cần thiết. header.php, sidebar.php 和 footer.php Tệp.
header.php Các tệp tin thường chứa thông báo về loại tài liệu (document type declaration) và thông tin đầu tiên của HTML (HTML header information). wp_head() Nội dung bao gồm kết quả đầu ra của hàm (function output), tiêu đề trang web (site title), và menu điều hướng chính (main navigation menu). Đây là phiên bản cơ bản (basic version). header.php Tệp tin như sau:
Đọc thêm Hướng dẫn bạn từng bước cách tạo ra một chủ đề WordPress tùy chỉnh mạnh mẽ và hiệu quả。
<!DOCTYPE html>
<html no numeric noise key 1006>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php wp_head(); ?>
</head>
<body no numeric noise key 1003>
<?php wp_body_open(); ?>
<header>
<h1><a href="/vi/</?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
</header> footer.php Trong trường hợp này, tệp tin sẽ gây ra việc đóng cấu trúc trang web và sau đó thực hiện lệnh được gọi (call). wp_footer() Nhiều plugin phụ thuộc vào hook này để chèn các đoạn mã (script) vào chương trình.
Thực hiện chức năng và phong cách của chủ đề (theme)
### – Menu và Bảng điều khiển Bên cạnh (Registration Menu and Sidebar)
Để người dùng có thể quản lý các mục trong menu thông qua giao diện quản trị nền (backend), bạn cần sử dụng các hàm để đăng ký vị trí của các mục đó. Việc này thường được thực hiện trong phần cấu hình của chủ đề (theme) trong hệ thống. functions.php Quá trình hoàn thành đã được thực hiện trong tệp tin. Tệp tin đã được tạo ra. functions.php Và hãy thêm đoạn mã sau:
<?php
function my_theme_setup() {
// 注册一个主菜单位置
register_nav_menus( array(
'primary' => __( '主导航菜单', 'my-first-theme' ),
) );
// 支持文章特色图像
add_theme_support( 'post-thumbnails' );
// 支持自定义Logo
add_theme_support( 'custom-logo' );
}
add_action( 'after_setup_theme', 'my_theme_setup' );
?> Tiếp theo, bạn cần phải… header.php Hãy gọi menu ở vị trí phù hợp (ví dụ: sau tiêu đề trang web) và sử dụng nó. wp_nav_menu() Hàm.
Tương tự, để kích hoạt khu vực hiển thị các tiện ích nhỏ (Widget), chẳng hạn như thanh bên cạnh, bạn cần phải… functions.php Đăng ký một thanh bên (sidebar) tại đây:
function my_theme_widgets_init() {
register_sidebar( array(
'name' => __( '主侧边栏', 'my-first-theme' ),
'id' => 'sidebar-1',
'description' => __( '在此添加小工具。', 'my-first-theme' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'my_theme_widgets_init' ); Sau đó, trong sidebar.php trong tệp dynamic_sidebar( 'sidebar-1' ) Hãy hiển thị nó.
Thêm phong cách (styles) và mã nguồn (scripts)
Việc sắp xếp các tệp CSS và JavaScript vào đúng hàng đợi (queue) là một thực hành tốt nhất trong quá trình phát triển WordPress. Điều này giúp tránh xung đột giữa các phần tử phụ thuộc lẫn nhau và tận dụng tối đa khả năng lưu trữ dữ liệu (cache). functions.php Hãy tạo một hàm mới trong đó:
function my_theme_scripts() {
// 引入主样式表
wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ) );
// 引入一个自定义脚本
wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), wp_get_theme()->get( 'Version' ), true );
}
add_action( 'wp_enqueue_scripts', 'my_theme_scripts' ); Như vậy, WordPress sẽ tự động thêm liên kết đến bảng định dạng (stylesheet) của bạn vào phần đầu trang (header). Đồng thời, một tệp mới cũng sẽ được tạo ra… /js/ Mục lục và hãy thêm nội dung của bạn vào đó. navigation.js Tệp.
Cấp độ của các mẫu (Template Levels) và các kỹ thuật nâng cao (Advanced Techniques)
### – Hiểu về cấu trúc các mẫu (templates)
WordPress sẽ lựa chọn tệp template phù hợp dựa trên loại trang được truy cập, theo một thứ tự phân cấp chính xác được xác định trước. Đây là một trong những khái niệm mạnh mẽ nhất trong quá trình phát triển theme (giao diện website). Ví dụ, khi người dùng truy cập vào một bài viết cụ thể, WordPress sẽ tìm kiếm theo thứ tự sau:single-{post-type}-{slug}.php -> single-{post-type}.php -> single.php -> singular.php -> Cuối cùng quay về index.php。
为你的博客文章创建一个自定义的单篇文章模板,你可以创建 single.phpĐể tạo một mẫu cho một trang cụ thể, chẳng hạn như trang “Về chúng tôi”, bạn có thể tạo một tệp có tên là… page-about.php Tệp tin đó (giả sử tên biệt danh của trang là “about”).
Sử dụng tính năng mở rộng thông qua các “hook” (khớp nối).
API cho các plugin của WordPress (các hook và filter) cho phép bạn thay đổi giao diện hoặc chức năng cốt lõi của hệ thống một cách an toàn. Các hook hành động (Action Hooks) cho phép bạn thực hiện một hành động cụ thể tại những thời điểm nhất định trong quá trình xử lý nội dung. Ví dụ, nếu bạn muốn tự động thêm một đoạn văn bản vào cuối bài viết, bạn có thể sử dụng các hook hành động để thực hiện điều đó. the_content bộ lọc:
function my_theme_add_footer_text( $content ) {
if ( is_single() ) {
$content .= '<p class="custom-footer">Bài viết này được tạo ra bởi hệ thống tạo nội dung theo chủ đề của tôi.</p>';
}
return $content;
}
add_filter( 'the_content', 'my_theme_add_footer_text' ); Tóm lại
Qua các bước được trình bày trong bài viết này, bạn đã hoàn thành quá trình phát triển chủ đề WordPress cơ bản: từ việc chuẩn bị môi trường cục bộ cho đến việc tạo ra các tài liệu định nghĩa thông tin về chủ đề. style.css Và các tệp mẫu (template files) tạo nên khung cấu của trang web, rồi đến… functions.php Bạn đã học cách sử dụng các tính năng đăng ký (như menu, sidebar) và các script điều chỉnh giao diện, đồng thời cũng đã hiểu rõ về cấu trúc phân cấp của các template (mẫu thiết kế) cũng như cơ chế hoạt động của các “hook” (các điểm kết nối giữa các thành phần của hệ thống). Việc ghi nhớ hai khái niệm cốt lõi này – “cấu trúc phân cấp của template” và “cách sắp xếp các script/styler đúng cách vào hàng đợi thực thi” – sẽ giúp bạn tránh được nhiều vấn đề thường gặp trong quá trình phát triển. Việc phát triển các theme (giao diện website) là một quá trình l
FAQ 常见问题
Phải chăng việc phát triển chủ đề (theme) cho ### phải bắt đầu từ con số không (tức từ đầu) sao?
Không phải vậy đâu. Bạn có thể chọn sử dụng chủ đề cơ bản chính thức (Underscores) hoặc các framework như Genesis làm điểm khởi đầu. Chúng cung cấp cấu trúc mã chuẩn hóa và các tính năng cơ bản, giúp nâng cao đáng kể hiệu quả phát triển và chất lượng mã nguồn, đặc biệt phù hợp với những người mới bắt đầu.
Làm thế nào để kiểm thử chủ đề (theme) của tôi mà không cần phải mã hóa nó?
Trong môi trường phát triển cục bộ, bạn có thể sử dụng dữ liệu kiểm thử đơn vị (unit test data) được tích hợp sẵn trong WordPress để nhập vào một lượng lớn bài viết, trang, menu và bình luận mẫu với nhiều định dạng và yếu tố khác nhau. Điều này sẽ giúp bạn kiểm thử toàn diện hiệu năng của giao diện (theme) trong các tình huống khác nhau.
Tại sao những thay đổi về kiểu dáng (style) của tôi không được áp dụng ngay lập tức trong giao diện người dùng (frontend)?
Điều này thường xảy ra do lỗi đệm (cache) của trình duyệt. Bạn có thể thử nhấn “Ctrl + F5” hoặc “Cmd + Shift + R” để làm mới trang web một cách đầy đủ. Nếu lỗi này do plugin đệm của WordPress gây ra, bạn cần xóa bộ đệm của plugin đó. Đồng thời, hãy kiểm tra lại cấu hình của trang web để đảm bảo mọi thứ đang hoạt động bình thường. style.css Liệu số phiên bản của tệp đã được cập nhật chưa?
Sau khi việc phát triển chủ đề (theme) được hoàn tất, làm thế nào để đóng gói và phân phối nó?
Trước hết, bạn cần đảm bảo rằng… style.css Thông tin chủ đề trong tệp tin là đầy đủ và chính xác. Sau đó, hãy xóa tất cả các tệp sao lưu trong quá trình phát triển cũng như các thư mục quản lý phiên bản (như…) .gitBạn cần sao chép tất cả các tệp tin liên quan đến giao diện (như CSS, JavaScript, hình ảnh, tệp cấu hình, v.v.) vào một thư mục, cũng như các tệp tin tạm thời (temporary files) nếu có. Sau đó, nén thư mục đó thành định dạng ZIP. Tệp ZIP này có thể được cài đặt thông qua trang quản trị WordPress, tại mục “Nhìn (Appearance)” -> “Giao diện (Themes)” -> “Thêm (Add)” -> “Tải lên giao diện (Upload Theme)”.
Bước tiếp theo, chúng ta nên làm gì tiếp theo?
Đọc thêm và kiến thức thực tế
Những nội dung sau đây liên quan đến chủ đề của bài viết này, thích hợp để tiếp tục đọc sâu hơn. Ưu tiên bắt đầu với bài viết gần nhất với vấn đề hiện tại của bạn, rồi dần dần mở rộng sang các chủ đề xung quanh, hiệu quả thường sẽ tốt hơn.
- Hướng dẫn phát triển chủ đề WordPress: Xây dựng trang web tùy chỉnh từ con số không
- Hướng dẫn tối ưu hóa SEO Bing cuối cùng: Chiến lược và kỹ thuật thực tế để cải thiện thứ hạng trang web
- Hướng dẫn toàn diện về phát triển theme WordPress: Từ con số không đến thành thục thông qua các bài học thực hành
- Hướng dẫn đầy đủ về phát triển chủ đề WordPress: Xây dựng các mẫu trang web chuyên nghiệp từ con số không
- Từ con số không đến con số một: Hướng dẫn đầy đủ và kỹ năng thực hành để xây dựng trang web chuyên nghiệp bằng WordPress