WordPress là máy khách XML-RPC?


13

Tôi muốn đồng bộ chỉnh sửa bài đăng trên hai trang web. Môi trường thử nghiệm, không sản xuất. Hướng đơn (trang A đến trang B, nhưng không ngược).

Về cơ bản, tôi chỉnh sửa bài đăng tại ngăn thử nghiệm cục bộ của mình và cùng một bài đăng (một phần của bộ nội dung kiểm tra) tại máy chủ từ xa phải được cập nhật với bản sao nội dung kết quả giống hệt nhau.

Tôi biết rằng máy chủ XML-RPC được triển khai trong WordPress ... Nhưng bản thân WordPress không phải là máy khách XML-RPC và tôi không biết việc biến nó thành một thứ dễ dàng như thế nào (tôi thường cảnh giác với mọi thứ về XML :)

Vì vậy, tôi nên đi với XML-RPC và thực hiện chức năng máy khách hay điều đó không đáng thời gian và tôi nên xây dựng biểu mẫu tùy chỉnh hoặc một cái gì đó tại máy chủ từ xa để nắm bắt các thay đổi?


fetch_feed và sử dụng Simple Pie có thể dễ thực hiện hơn.
Chris_O

@Chris_O hmmm ... nhưng sau đó tôi sẽ cần (1) tạo nguồn cấp dữ liệu với tất cả các bài đăng trên trang web (2) quét mọi bài đăng trong nguồn cấp dữ liệu đó để thay đổi mỗi lần. (chỉnh sửa) Về cơ bản đây là tình huống kéo (B kéo từ A) và tôi nghĩ rằng tôi cần đẩy (A đẩy sang B)
Rarst

Nó sẽ hoạt động để bắt bài viết mới nhưng không hiệu quả để kiểm tra các thay đổi.
Chris_O

@Chris_O không có điều kiện tôi sẽ chỉnh sửa các bài đăng mới hơn, ngược lại - tôi có thể quay lại và chỉnh sửa một số bài đăng cũ nếu tôi cần thay đổi dữ liệu kiểm tra không dùng nữa.
Hiếm

Câu trả lời:


13

WordPress đã có một lớp máy khách XML-RPC được triển khai. Nó nằm trong cùng một tệp với phần máy chủ: class-IXR.phpnằm trong wp-includes.

Các mã sau đây sẽ tạo ra một bài viết mới. Bạn có thể gói cái này trong một hàm và gắn nó vào hook save_post/ update_postaction. Để đồng bộ cả hai phần, bạn có thể kiểm tra sên sau hoặc gửi cùng một id cho bài đăng trong blog thứ hai.

$rpc = new IXR_Client('http://second-blog-domain.tld/path/to/wp/xmlrpc.php');

$post = array(
    'title' => 'Post Title',
    'categories' => array('Category A', 'Category B'),
    'mt_keywords' => 'tagA, tagB, tagC',
    'description' => 'Post Content',
    'wp_slug' => 'post-slug'
);

$params = array(
    0,
    'username',
    'password',
    $post,
    'publish'
);

$status = $rpc->query(
    'metaWeblog.newPost',
    $params
);

if(!$status) {
    echo 'Error [' . $rpc->getErrorCode() . ']: ' . $rpc->getErrorMessage();
    exit();
}

Cảm ơn bạn, tôi không biết nó thực sự có máy khách và tìm kiếm Codex nhanh chóng bỏ lỡ nó.
Rarst
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.