XML-RPC क्लाइंट के रूप में वर्डप्रेस?


13

मैं दो साइट पर पोस्ट संपादन सिंक करना चाहता हूं। पर्यावरण का परीक्षण, उत्पादन नहीं। एकल दिशा (साइट ए से साइट बी, लेकिन पीछे की ओर नहीं)।

मूल रूप से मैं अपने स्थानीय परीक्षण स्टैक पर पोस्ट को संपादित करता हूं और दूरस्थ सर्वर पर समान पोस्ट (परीक्षण सामग्री सेट का हिस्सा) को परिणामी सामग्री की समान प्रतिलिपि के साथ अद्यतन किया जाना चाहिए।

मुझे पता है कि वर्डप्रेस में एक्सएमएल-आरपीसी सर्वर लागू है ... लेकिन वर्डप्रेस खुद एक्सएमएल-आरपीसी क्लाइंट नहीं है और मुझे नहीं पता कि इसे एक में बनाना कितना आसान होगा (मैं आमतौर पर एक्सएमएल-कुछ से सावधान हूं :)

तो क्या मुझे XML-RPC के साथ जाना चाहिए और क्लाइंट कार्यक्षमता को लागू करना चाहिए या जो समय के लायक नहीं है और मुझे बदलावों को पकड़ने के लिए कस्टम सर्वर या दूरस्थ सर्वर पर कुछ बनाना चाहिए?


fetch_feed और Simple Pie का उपयोग करना आसान हो सकता है।
क्रिस_ओ

@Chris_O हम्म् ... लेकिन तब मुझे (1) साइट पर सभी पोस्ट के साथ फ़ीड उत्पन्न करने की आवश्यकता होगी (2) हर बार परिवर्तनों के लिए उस फ़ीड में प्रत्येक पोस्ट स्कैन करें। (संपादित करें) मूल रूप से यह पुल की स्थिति है (बी ए से खींचती है) और मुझे लगता है कि मुझे पुश की जरूरत है (ए पुश टू बी)
रार्स्ट

यह नए पदों को पकड़ने के लिए काम करेगा लेकिन परिवर्तनों की जाँच के लिए बहुत कुशल नहीं है।
क्रिस_ओ

@Chris_O की कोई शर्त नहीं है कि मैं नए पदों को संपादित करूंगा, इसके विपरीत - मैं वापस जा सकता हूं और कुछ पुराने पोस्ट को संपादित कर सकता हूं अगर मुझे पदावनत परीक्षण डेटा को बदलने की आवश्यकता है।
कर्क राशि

जवाबों:


13

वर्डप्रेस में पहले से ही XML-RPC क्लाइंट क्लास लागू है। यह सर्वर पार्ट के समान फ़ाइल में है: में class-IXR.phpस्थित है wp-includes

निम्न कोड एक नई पोस्ट उत्पन्न करेगा। आप इसे किसी फ़ंक्शन में लपेट सकते हैं और इसे save_post/ update_postकार्रवाई हुक में संलग्न कर सकते हैं । दोनों हिस्सों को सिंक करने के लिए, आप पोस्ट-स्लग की जांच कर सकते हैं या दूसरे ब्लॉग में पोस्ट के लिए एक ही पोस्ट-आईडी सबमिट कर सकते हैं।

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

धन्यवाद, मुझे नहीं पता था कि यह वास्तव में ग्राहक है और त्वरित कोडेक्स खोज ने इसे याद किया।
रारस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.