đăng bài với markdown

Mô tả ngắn của bài viết

Để đăng bài viết qua API WordPress với định dạng của Block Editor (Gutenberg), bạn cần sử dụng trường content để gửi dữ liệu ở dạng HTML hoặc định dạng JSON phù hợp với cấu trúc Block Editor. Dưới đây là hướng dẫn và mã Python được cập nhật để sử dụng định dạng Block Editor.

Cấu Trúc Dữ Liệu Định Dạng Block Editor

Block Editor lưu trữ nội dung bài viết trong dạng JSON. Bạn có thể tạo cấu trúc JSON cho các block khác nhau trong nội dung bài viết. Ví dụ, bạn có thể tạo một bài viết với các block đơn giản như tiêu đề, đoạn văn, và hình ảnh.

Mã Python Cập Nhật với Định Dạng Block Editor

Dưới đây là mã Python để gửi bài viết qua API với định dạng của Block Editor:

“`python
import requests
import base64
import json
import tkinter as tk
from tkinter import messagebox

Hàm để gửi yêu cầu đăng bài

def post_article():
wordpress_user = ‘admin’ # Thay thế với tên người dùng của bạn
wordpress_password = ‘o0ld gOVP 2pyN zapO tkKC bgNU’ # Thay thế với mật khẩu ứng dụng của bạn

# Tạo token xác thực
wordpress_credentials = f'{wordpress_user}:{wordpress_password}'
wordpress_token = base64.b64encode(wordpress_credentials.encode())
wordpress_header = {'Authorization': 'Basic ' + wordpress_token.decode('utf-8')}

# Lấy dữ liệu từ ô nhập
title = title_entry.get()
content = content_entry.get("1.0", tk.END)  # Lấy nội dung từ ô nhập nhiều dòng

# Dữ liệu bài viết mới với định dạng Block Editor
post_data = {
    'title': title,
    'content': json.dumps([
        {
            'blockName': 'core/paragraph',
            'attrs': {},
            'innerHTML': f'<p>{content.strip()}</p>',
            'innerContent': [content.strip()]
        }
    ]),
    'status': 'publish',
    'excerpt': 'Mô tả ngắn của bài viết',
    'categories': [1, 2]  # Thay thế với ID danh mục bạn muốn
}

# URL API để tạo bài viết mới
api_url = 'https://nguoikhongten.com/wp-json/wp/v2/posts'

try:
    # Gửi yêu cầu POST để tạo bài viết mới
    response = requests.post(api_url, headers=wordpress_header, json=post_data)

    # Kiểm tra kết quả
    if response.status_code == 201:
        messagebox.showinfo("Thành công", "Bài viết đã được tạo thành công!")
    else:
        error_message = response.json().get('message', 'Có lỗi xảy ra')
        messagebox.showerror("Lỗi", f"Có lỗi xảy ra: {error_message}")

except requests.ConnectionError:
    messagebox.showerror("Lỗi", "Không thể kết nối tới trang WordPress.")
except Exception as e:
    messagebox.showerror("Lỗi", f"Có lỗi xảy ra: {e}")

Tạo cửa sổ chính

root = tk.Tk()
root.title(“Đăng Bài Viết lên WordPress”)

Tạo nhãn và ô nhập tiêu đề

title_label = tk.Label(root, text=”Tiêu đề bài viết:”)
title_label.pack(pady=5)
title_entry = tk.Entry(root, width=50)
title_entry.pack(pady=5)

Tạo nhãn và ô nhập nội dung

content_label = tk.Label(root, text=”Nội dung bài viết:”)
content_label.pack(pady=5)
content_entry = tk.Text(root, height=10, width=50)
content_entry.pack(pady=5)

Tạo nút đăng bài

post_button = tk.Button(root, text=”Đăng Bài Viết”, command=post_article)
post_button.pack(pady=20)

Chạy ứng dụng

root.mainloop()
“`

Chú Thích

  1. Cấu Trúc post_data: Trong phần content, chúng ta gửi dữ liệu ở định dạng JSON cho Block Editor. Mỗi block được xác định bằng blockName. Ở đây, ví dụ sử dụng block core/paragraph để tạo một đoạn văn bản.

  2. Sử Dụng json.dumps(): Để chuyển đổi nội dung của block sang định dạng JSON.

  3. Xử Lý Lỗi: Vẫn giữ nguyên để xử lý các lỗi có thể xảy ra khi gửi yêu cầu tới API.

Lưu Ý

  • Đảm Bảo Tương Thích: Đảm bảo rằng trang WordPress của bạn đang sử dụng Block Editor (Gutenberg) và hỗ trợ các block mà bạn muốn sử dụng.

  • Kiểm Tra Kết Nối: Đảm bảo rằng bạn có kết nối Internet khi chạy mã này và thông tin đăng nhập của bạn là chính xác.

Nếu bạn cần thêm thông tin hoặc có câu hỏi khác, hãy cho tôi biết!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *