XML-RPC istemcisi olarak WordPress?


13

İki sitede yayın düzenlemelerini senkronize etmek istiyorum. Test ortamı, üretim değil. Tek yön (A bölgesi B yerine, ancak geriye değil).

Temel olarak yerel test yığınımdaki yazıyı düzenliyorum ve uzak sunucudaki aynı yazının (test içeriği kümesinin bir parçası) sonuçtaki içeriğin aynı kopyasıyla güncellenmesi gerekiyor.

XML-RPC sunucusunun WordPress'te uygulandığını biliyorum ... Ama WordPress'in kendisi bir XML-RPC istemcisi değil ve bir tane haline getirmenin ne kadar kolay olacağı hakkında hiçbir fikrim yok (genellikle XML'den her şeye dikkat ediyorum :)

Bu yüzden XML-RPC ile gidip istemci işlevselliğini uygulamalıyım ya da zaman ayırmaya değer değil ve değişiklikleri yakalamak için uzak sunucuda özel bir form ya da bir şey oluşturmalıyım?


fetch_feed ve Simple Pie kullanmak daha kolay olabilir.
Chris_O

@Chris_O hmmm ... ama sonra (1) sitedeki tüm yayınlarla yayın oluşturmam gerekirdi (2) her zaman değişiklikler için o yayındaki her yazıyı tara. Temelde bu çekme durumudur (B A'dan çeker) ve sanırım itmeye ihtiyacım var (A B'ye itiyor)
Rarst

Yeni yayınlar yakalamak için işe yarayacaktı, ancak değişiklikleri kontrol etmek için çok verimli değildi.
Chris_O

@Chris_O, daha yeni yayınları düzenlemem için bir koşul yok, aksine - Kullanım dışı test verilerini değiştirmem gerekirse geri dönüp bazı eski yayınları düzenleyebilirim.
Nadir

Yanıtlar:


13

WordPress'te zaten bir XML-RPC istemci sınıfı uygulanmıştır. Bulunan sunucu bölümü ile aynı dosyada class-IXR.phpbulunur wp-includes.

Aşağıdaki kod yeni bir yazı oluşturur. Bunu bir işleve sarabilir ve save_post/ update_postaction hook'a ekleyebilirsiniz . Her iki parçayı da senkronize etmek için post-slug olup olmadığını kontrol edebilir veya aynı blog numarasını ikinci blogdaki gönderiye gönderebilirsiniz.

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

Teşekkür ederim, aslında istemci ve hızlı Codex arama kaçırdı hiçbir fikrim yoktu.
Rarst
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.