0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Tự động dịch bài viết WordPress với GPT và WPML

Đăng vào 8 tháng trước

• 6 phút đọc

Chủ đề:

KungFuTech

Tự động dịch bài viết WordPress với GPT và WPML

Quản lý các trang web đa ngôn ngữ thật sự là một thách thức lớn. Việc viết cùng một bài viết bằng nhiều ngôn ngữ khác nhau không chỉ tốn thời gian mà còn dễ gây ra lỗi. Vậy nếu WordPress có thể tự động dịch bài viết của bạn ngay khi bạn nhấn "Xuất bản" thì sao? Bài hướng dẫn này sẽ giúp bạn xây dựng một plugin WordPress kết nối WPML với GPT, tự động tạo ra các phiên bản dịch của nội dung.

✨ Những gì bạn sẽ học

  1. Cách tạo một plugin WordPress tùy chỉnh
  2. Cách hook vào hành động save_post
  3. Cách sử dụng APIs của WPML để quản lý các bản dịch
  4. Cách tích hợp GPT để dịch theo thời gian thực

🔧 Bước 1: Thiết lập cấu trúc plugin

Bên trong thư mục wp-content/plugins/, tạo một thư mục mới:

Copy
auto-gpt-translator/

Sau đó, thêm một tệp tin: auto-gpt-translator.php

Copy
<?php
/**
 * Tên Plugin: Auto GPT Translator for WPML
 * Mô tả: Tự động dịch các bài viết WordPress sang nhiều ngôn ngữ bằng cách sử dụng GPT và WPML.
 * Phiên bản: 1.0
 * Tác giả: Tên của bạn
 */

if ( ! defined( 'ABSPATH' ) ) exit;

class AutoGPTTranslator {

    public function __construct() {
        add_action('save_post', [$this, 'auto_translate_post'], 20, 2);
    }

    public function auto_translate_post($post_id, $post) {
        if ( wp_is_post_revision($post_id) ) return;

        $languages = apply_filters('wpml_active_languages', NULL, ['skip_missing' => 0]);

        if (!$languages) return;

        foreach ($languages as $lang => $details) {
            if ($lang === apply_filters('wpml_default_language', NULL)) continue;

            $this->translate_and_save($post_id, $post, $lang);
        }
    }

    private function translate_and_save($post_id, $post, $lang) {
        $translated_content = $this->call_gpt_translation($post->post_content, $lang);
        $translated_title   = $this->call_gpt_translation($post->post_title, $lang);

        do_action('wpml_update_translated_post', [
            'element_id'    => $post_id,
            'trid'          => apply_filters('wpml_element_trid', NULL, $post_id, 'post_post'),
            'language_code' => $lang,
            'source_language_code' => apply_filters('wpml_default_language', NULL),
            'post_content'  => $translated_content,
            'post_title'    => $translated_title,
        ]);
    }

    private function call_gpt_translation($text, $target_lang) {
        $api_key = get_option('auto_gpt_api_key');
        if (!$api_key) return $text;

        $response = wp_remote_post("https://api.openai.com/v1/chat/completions", [
            'headers' => [
                'Content-Type' => 'application/json',
                'Authorization' => "Bearer $api_key",
            ],
            'body' => json_encode([
                'model' => 'gpt-4o-mini',
                'messages' => [
                    ['role' => 'system', 'content' => "Dịch đoạn văn sau sang $target_lang."],
                    ['role' => 'user', 'content' => $text]
                ],
            ]),
        ]);

        if ( is_wp_error($response) ) return $text;

        $body = json_decode(wp_remote_retrieve_body($response), true);

        return $body['choices'][0]['message']['content'] ?? $text;
    }
}

new AutoGPTTranslator();

🔧 Bước 2: Thêm trang cài đặt

Chúng ta cần một trang quản trị đơn giản nơi bạn có thể dán khóa API OpenAI của mình. Tạo settings.php trong thư mục plugin:

Copy
<?php
add_action('admin_menu', function() {
    add_options_page(
        'Auto GPT Translator',
        'Auto GPT Translator',
        'manage_options',
        'auto-gpt-translator',
        'auto_gpt_translator_settings_page'
    );
});

add_action('admin_init', function() {
    register_setting('auto_gpt_translator_settings', 'auto_gpt_api_key');
});

function auto_gpt_translator_settings_page() {
?>
<div class="wrap">
    <h1>Cài đặt Auto GPT Translator</h1>
    <form method="post" action="options.php">
        <?php settings_fields('auto_gpt_translator_settings'); ?>
        <?php do_settings_sections('auto_gpt_translator_settings'); ?>
        <table class="form-table">
            <tr valign="top">
                <th scope="row">Khóa API OpenAI</th>
                <td><input type="text" name="auto_gpt_api_key" value="<?php echo esc_attr(get_option('auto_gpt_api_key')); ?>" style="width: 400px;"/></td>
            </tr>
        </table>
        <?php submit_button(); ?>
    </form>
</div>
<?php
}

⚙️ Bước 3: Cách hoạt động

  1. Bạn xuất bản một bài viết bằng ngôn ngữ mặc định của WPML.
  2. Plugin phát hiện tất cả các ngôn ngữ đang hoạt động khác.
  3. Đối với mỗi ngôn ngữ, nó gửi tiêu đề và nội dung bài viết đến GPT.
  4. WPML tự động lưu các phiên bản dịch mới.

🔒 Thực tiễn bảo mật tốt nhất

  • Luôn sử dụng esc_attr()sanitize_text_field() khi lưu cài đặt.
  • Xác thực phản hồi API bằng cách sử dụng is_wp_error().
  • Cân nhắc thêm giới hạn tỷ lệ để tránh lạm dụng API.
  • Không bao giờ mã hóa khóa API của bạn trong plugin.

🚀 Những gì bạn đã xây dựng

Bạn đã có một plugin WordPress sẵn sàng cho sản xuất, với các tính năng:

  • Tự động dịch bài viết bằng GPT
  • Tích hợp liền mạch với WPML
  • Quản lý các bản dịch mà không cần sao chép và dán thủ công

🏁 Kết luận

Với plugin này, bạn có thể tiết kiệm thời gian và nỗ lực khi quản lý các bài viết đa ngôn ngữ trên trang WordPress của mình. Hãy bắt đầu ngay hôm nay và để GPT giúp bạn tự động hóa quy trình dịch thuật!

❓ Câu hỏi thường gặp

1. Tôi có thể sử dụng plugin này cho các ngôn ngữ nào?

Plugin hỗ trợ tất cả các ngôn ngữ mà WPML cung cấp.

2. Có thể sử dụng GPT miễn phí không?

Hiện tại, bạn cần một khóa API OpenAI để sử dụng GPT.

3. Plugin có tương thích với các phiên bản WordPress mới không?

Plugin được thiết kế để tương thích với các phiên bản WordPress mới nhất.

4. Làm thế nào tôi có thể báo cáo lỗi hoặc đề xuất tính năng?

Bạn có thể liên hệ với tác giả plugin thông qua trang cài đặt hoặc trực tiếp qua email.

🔗 Tài nguyên tham khảo

Hãy thử nghiệm và chia sẻ trải nghiệm của bạn với cộng đồng phát triển WordPress Việt Nam!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào