Điều thú vị ở đây là nếu bạn thử google tiêu đề của bài đăng này, bạn sẽ tìm thấy rất nhiều plugin và hầu hết chúng đều đã lỗi thời và không có bài viết hay ví dụ về mã nào.
Trong hướng dẫn này, mình sẽ hướng dẫn bạn quy trình tạo hàng loạt bài đăng, chúng ta sẽ không chỉ tự động tạo bài đăng hoặc trang mà còn cố gắng sử dụng dữ liệu từ trình tạo Lorem Ipsum hoặc Open AI (ChatGPT) .
Tạo bài viết bằng wp_insert_post()
Câu hỏi đặt ra ở đây là chúng ta có thực sự nên sử dụng wp_insert_post()
cho mục đích đó hay không? Hàm này thực hiện được rất nhiều thứ, vậy có lẽ cách nhanh hơn sẽ là INSERT INTO
truy vấn SQL?
Và điều mình nghĩ ở đây là mặc dù wp_insert_post()
có thể chậm hơn một truy vấn SQL đơn lẻ, nhưng những điều mà hàm này thực hiện thực sự hữu ích:
- Bạn sẽ có một mã code đơn giản hơn, đặc biệt là trong trường hợp bạn muốn thêm danh mục và siêu dữ liệu vào các bài viết.
- Nếu bạn có một số plugin đang chạy trên trang web của bạn, bạn có thể chắc chắn rằng chúng sẽ tương thích với các bài viết mới được tạo ra.
Vậy, hãy bắt đầu với một ví dụ đơn giản:
$number_of_posts = 10;
for( $i = 0; $i < $number_of_posts; $i++ ) {
wp_insert_post(
array(
'post_title' => 'Article ' . ( $i + 1 ),
'post_content' => 'Some content',
'post_status' => 'draft'
)
);
}
Khi chạy đoạn code này chúng ta sẽ nhận được kết quả như sau:
Một điều quan trọng, xin đừng chạy hàm wp_insert_post()
trực tiếp trong functions.php
vì nó có thể quá sớm. Nếu bạn đang kiểm tra các tính năng bằng cách này, hãy thêm hook admin_init
hoặc một cái gì đó.
Bây giờ, mình sẽ hướng dẫn bạn cách tạo nhiều bài viết cùng một lúc bằng cách sử dụng danh sách các tiêu đề bài viết.
$titles = array(
'Where to work with laptop in Athens?',
'Coffee Guide to Istanbul',
'Snowboarding in Georgia',
'How to bulk publish posts with WordPress REST API'
);
foreach( $titles as $title ) {
wp_insert_post(
array(
'post_title' => $title,
'post_status' => 'publish' // let's publish posts immediately
)
);
}
Và sau đó, chúng ta sẽ có một danh sách mới các bài viết đã được xuất bản. Có vẻ khá dễ dàng, phải không?
Cuối cùng nhưng không kém phần quan trọng, hãy làm ví dụ của chúng ta trở nên thú vị hơn, để làm điều đó, chúng ta sẽ cố gắng thêm danh mục, thẻ và trường tùy chỉnh vào các bài viết của chúng ta.
$articles = array(
array(
'title' => 'Where to work with laptop in Athens?',
'city' => 'Athens',
),
array(
'title' => 'Coffee Guide to Istanbul',
'city' => 'Istanbul',
),
array(
'title' => 'Snowboarding in Georgia',
'city' => 'Gudauri',
),
array(
'title' => 'How to bulk publish posts with WordPress REST API',
)
);
foreach( $articles as $article ) {
$article_id = wp_insert_post(
array(
'post_title' => $article[ 'title' ],
'post_status' => 'publish'
)
);
if( ! empty( $article[ 'city' ] ) ) {
update_post_meta( $article_id, 'city', $article[ 'city' ] );
wp_set_post_terms( $article_id, 'travel', 'post_tag' );
}
}
Sử dụng Lorem Ipsum Generator để tạo bài viết WordPress
Bây giờ, hãy tạo nhiều bài đăng nhưng tạo nội dung bài đăng hoặc đoạn trích với sự trợ giúp của bất kỳ API trình tạo Lorem Ipsum nào. Mình quyết định sử dụng dinoipsum.com này, bạn cũng có thể thử xem.
Mình sẽ sử dụng phiên bản sửa đổi của ví dụ đầu tiên ở đây.
$number_of_dinosaurus = 5;
for( $i = 0; $i < $number_of_dinosaurus; $i++ ) {
$request = wp_remote_get(
add_query_arg(
array(
'format' => 'text',
'paragraphs' => 1,
'words' => 15,
),
'https://dinoipsum.com/api/'
)
);
if( 'OK' !== wp_remote_retrieve_response_message( $request ) ) {
continue;
}
wp_insert_post(
array(
'post_title' => 'Dinosaur ' . ( $i + 1 ),
'post_excerpt' => wp_remote_retrieve_body( $request ),
)
);
}
Điều duy nhất mình muốn nhấn mạnh rằng có lẽ tốt hơn là chạy một yêu cầu HTTP để Lorem Ipsum tạo và sau đó chia nội dung giữa tất cả các bài đăng mà chúng ta sẽ tạo hàng loạt. Thực tế, đó là những gì mình sẽ làm trong phần tiếp theo về Open AI.
Nhưng hiện tại, đây là kết quả:
Tạo bài đăng WordPress bằng Open AI (ChatGPT)
Nhưng điểm mấu chốt là tại sao chúng ta lại sử dụng nội dung lorem ipsum khi chúng ta có thể sử dụng nội dung được tạo ra bằng trí tuệ nhân tạo (AI) ngay bây giờ? Hãy tìm hiểu điều đó.
Trong ví dụ dưới đây, mình sẽ sử dụng Open AI API. Tất nhiên, trước hết bạn phải đăng ký và tạo một khóa API. Hãy yêu cầu Open AI tạo ra 5 tiêu đề về dinosaurs, chúng ta sẽ sử dụng chúng làm tiêu đề bài viết.
$text = 'Write 5 taglines about dinosaurs.';
$password = 'API KEY IS HERE';
$chatgpt_request = wp_remote_post(
'https://api.openai.com/v1/chat/completions',
array(
'timeout' => 30,
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $password
),
'body' => json_encode(
array(
'model' => 'gpt-3.5-turbo',
'messages' => array(
array(
'role' => 'user',
'content' => $text
),
),
'temperature' => 0.7 // randomeness
)
)
)
);
if( 'OK' === wp_remote_retrieve_response_message( $chatgpt_request ) ) {
$body = json_decode( wp_remote_retrieve_body( $chatgpt_request ) );
// by default we have it in a format like
// 1. "First title"
// 2. "Second title"
// 3. ...
// let's do some formatting
$titles = array_map(
function( $choice_text ) {
if( preg_match( '/"([^"]+)"/', $choice_text, $c ) ) {
return $c[1];
}
},
explode( "\n", trim( $body->choices[0]->message->content ) )
);
foreach( $titles as $title ) {
wp_insert_post(
array(
'post_title' => $title
)
);
}
}
- Như bạn có thể thấy, không có gì phức tạp ở đây cả, mình chỉ đang sử dụng WordPress HTTP API để thực hiện một yêu cầu đến Open AI API và xử lý kết quả từ đó.
- Ở dòng
7
, mình đặt'timeout' => 30
, điều này rất quan trọng vì hiện nay Open AI API khá chậm, nên chúng ta phải để yêu cầu HTTP của chúng ta đợi kết quả. - Mã code ở dòng
31-43
đang chờ đợi để cải thiện, vì mình chỉ thực hiện một số định dạng nhanh để chuyển đổi phản hồi từ Open AI thành một mảng các tiêu đề mà chúng ta có thể sử dụng làm đối số chowp_insert_post()
.
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu cách tạo nhiều bài viết cùng một lúc trong WordPress một cách dễ dàng và hiệu quả. Chúng ta đã bắt đầu từ cách sử dụng WordPress HTTP API để thực hiện các yêu cầu và xử lý kết quả từ API bên ngoài. Sau đó, chúng ta đã thảo luận về việc thêm danh mục, thẻ, và dữ liệu tùy chỉnh vào các bài viết, tạo ra sự đa dạng và phong phú trong nội dung.
Chúng ta cũng đã thử nghiệm việc tạo nội dung bài viết bằng cách sử dụng Lorem Ipsum và sử dụng trí tuệ nhân tạo thông qua Open AI API để tạo nội dung tùy chỉnh và tiêu đề bài viết. Điều này giúp tạo ra các bài viết độc đáo và hấp dẫn hơn.
Cuối cùng, chúng ta đã nhấn mạnh về việc sử dụng công nghệ trí tuệ nhân tạo để tạo ra nội dung, giúp tiết kiệm thời gian và nâng cao chất lượng bài viết trong quá trình tạo nội dung hàng loạt trên WordPress.
Nếu bạn thích bài viết này, vui lòng đăng ký Kênh YouTube của CongVietBlog để xem các video hướng dẫn về WordPress. Bạn cũng có thể tìm thấy CongVietBlog trên Facebook.