XML-RPC 클라이언트로서의 WordPress?


13

두 사이트에서 게시물 수정 사항을 동기화하고 싶습니다. 프로덕션이 아닌 테스트 환경. 단일 방향 (사이트 A에서 사이트 B로, 역방향은 아님)

기본적으로 로컬 테스트 스택에서 게시물을 편집하고 원격 서버에서 동일한 게시물 (테스트 내용 세트의 일부)을 동일한 결과 사본으로 업데이트해야합니다.

XML-RPC 서버가 WordPress에 구현되어 있다는 것을 알고 있습니다 ...하지만 WordPress 자체는 XML-RPC 클라이언트가 아니며 하나로 만드는 것이 얼마나 쉬운 지 전혀 모릅니다 (일반적으로 XML을 경계합니다 :)

따라서 XML-RPC를 사용하여 클라이언트 기능을 구현해야합니까, 아니면 시간이 가치가 없으며 원격 서버에서 변경 사항을 포착하기 위해 사용자 지정 양식이나 무언가를 작성해야합니까?


fetch_feed 및 Simple Pie를 사용하는 것이 구현하기가 더 쉬울 수 있습니다.
Chris_O

@Chris_O hmmm ...하지만 (1) 사이트의 모든 게시물로 피드를 생성해야합니다 (2) 매번 변경 사항이 있는지 해당 피드의 모든 게시물을 스캔해야합니다. (편집) 기본적으로 이것은 상황입니다 (B는 A에서 가져옵니다). 나는 푸시 가 필요하다고 생각합니다 (A는 B로 푸시합니다)
Rarst

새로운 게시물을 잡는 데 효과적이지만 변경 사항을 확인하는 데는 효율적이지 않습니다.
Chris_O

@Chris_O 반대로 새로운 게시물을 편집 할 조건이 없습니다. 반대로 사용되지 않는 테스트 데이터를 변경 해야하는 경우 이전 게시물을 다시 편집 할 수 있습니다.
Rarst

답변:


13

WordPress에는 이미 XML-RPC 클라이언트 클래스가 구현되어 있습니다. 서버 부분과 동일한 파일 class-IXR.phpwp-includes있습니다.

다음 코드는 새 게시물을 생성합니다. 이것을 함수로 감싸서 save_post/ update_postaction hook에 붙일 수 있습니다. 두 부분을 동기화하려면 게시물 슬러그를 확인하거나 두 번째 블로그의 게시물에 동일한 게시물 ID를 제출하면됩니다.

$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();
}

고맙습니다. 실제로 클라이언트가 있고 빠른 코덱 검색이 누락되었습니다.
Rarst
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.