1. Cách Định Nghĩa Command Cho WP-CLI
Để tạo command riêng cho WP-CLI, bạn chỉ cần sử dụng hook WP_CLI::add_command() trong file functions.php của theme hoặc plugin. Lệnh này sẽ giúp WP-CLI nhận diện và thực thi một lệnh mới mà bạn tự định nghĩa.
Cấu Trúc Cơ Bản
// functions.php
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'my_command', 'my_command_function' );
}
Trong đó:
my_command: tên của lệnh mà bạn muốn sử dụng trong WP-CLI.my_command_function: hàm PHP sẽ xử lý logic cho command này.
2. Tạo Command Đơn Giản: In Ra Lời Chào
Ví dụ đơn giản nhất là tạo command “hello” để in ra lời chào:
// functions.php
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'hello', 'wpcli_hello' );
}
function wpcli_hello() {
WP_CLI::success( 'Hello, WP-CLI!' );
}
Giải thích:
- Hàm
wpcli_hellosẽ được gọi khi người dùng gõ lệnhwp hellotrong terminal. - Hàm
WP_CLI::success()sẽ in ra thông báo “Hello, WP-CLI!” trong màu xanh lá cây nếu lệnh thành công.
3. Thêm Tham Số Cho Command
Bạn có thể thêm tham số vào command của mình để linh hoạt hơn. Ví dụ, tạo command chào người dùng với tên được chỉ định:
// functions.php
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'greet', 'wpcli_greet' );
}
function wpcli_greet( $args, $assoc_args ) {
$name = $args[0] ?? 'World'; // Lấy tên từ tham số
WP_CLI::success( 'Hello, ' . $name . '!' );
}
Lệnh này sẽ chấp nhận tham số đầu vào. Nếu người dùng nhập wp greet John, kết quả sẽ là “Hello, John!”.
4. Thêm Các Tham Số Đặt Tên
Bạn có thể sử dụng tham số dạng tên, giúp người dùng dễ dàng hiểu và sử dụng command. Ví dụ, tạo lệnh xóa tất cả bài viết thuộc một thể loại cụ thể:
// functions.php
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'delete_category_posts', 'wpcli_delete_category_posts' );
}
function wpcli_delete_category_posts( $args, $assoc_args ) {
$category_name = $assoc_args['category'] ?? ''; // Tham số category
if ( empty( $category_name ) ) {
WP_CLI::error( 'Category name is required!' );
return;
}
$category = get_category_by_slug( $category_name );
if ( !$category ) {
WP_CLI::error( 'Category not found!' );
return;
}
$posts = get_posts( array(
'category' => $category->term_id,
'posts_per_page' => -1,
));
foreach ( $posts as $post ) {
wp_delete_post( $post->ID, true ); // Xóa bài viết
}
WP_CLI::success( 'All posts in category "' . $category_name . '" have been deleted.' );
}
Trong ví dụ này, command wp delete_category_posts --category=your-category sẽ xóa tất cả bài viết trong thể loại được chỉ định.
5. Thêm Quá Trình Kiểm Tra và Lỗi
Đảm bảo rằng command của bạn xử lý các trường hợp lỗi và thông báo thích hợp:
// functions.php
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'check_posts', 'wpcli_check_posts' );
}
function wpcli_check_posts() {
$posts = get_posts( array( 'numberposts' => 10 ) );
if ( empty( $posts ) ) {
WP_CLI::error( 'No posts found!' );
} else {
WP_CLI::success( 'Found ' . count( $posts ) . ' posts.' );
}
}
Với ví dụ này, lệnh wp check_posts sẽ trả về thông báo lỗi nếu không có bài viết nào được tìm thấy và thông báo thành công nếu có bài viết.
6. Kết Luận
Việc tạo các command WP-CLI của riêng bạn giúp tiết kiệm thời gian và dễ dàng quản lý WordPress qua dòng lệnh. Thực hiện các công việc tự động hóa, xóa bài viết, xử lý dữ liệu nhanh chóng với WP-CLI sẽ cải thiện hiệu suất công việc. Hãy thử tự tạo các lệnh cho các tác vụ thường xuyên mà bạn làm.
Tip: Đừng quên kiểm tra kỹ lưỡng các lệnh bạn định triển khai trên website live để tránh các lỗi không đáng có.
Bình luận