Come pubblicare contenuti su un portale in WordPress usando il protocollo XMLRPC
XML-RPC è un protocollo basato su XML per la chiamata di procedure remote (Remote Procedure Call)
WordPress supporta il protocollo XML-RPC per la gestione dei contenuti attraverso le proprie XML-RPC WordPress API.
Nota: per verificare che il portale WordPress sia abilitato al protocollo XmlRpc visitare la pagina www.NOMESITO.it/xmlrpc.php. Se la risposta è: XML-RPC server accepts POST requests only. allora è tutto ok. Ricordarsi di abilitarlo dal menu Impostazioni/Scrittura/Pubblicazione remota).
Vediamo come pubblicare contenuti usando VB.NET.
Scarichiamo la libreria xml-rpc.net (in questo esempio uso la versione 2.5.0). Nel file zip scaricato c’è la cartella “src”, che contiene un progetto in Visual Studio. Apriamo il progetto ed eseguiamo il build. Otteniamo così la dll: CookComputing.XmlRpcV2.dll
Di seguito, molto sinteticamente, le parti di codice necessarie alla “pubblicazione di un articolo in wordpress”. Il codice prevede la pubblicazione di un articolo, ma comprendendone il funzionamento sarà facile espanderne le possibilità per gestire tutti gli altri contenuti di un sito creato con wordpress.
Dichiarazione della DLL
Imports CookComputing.XmlRpc
Definizione della struttura dati e della funzione
Public Structure blogInfo Public title As String Public description As String Public categories() As String 'array di stringhe che contengono nomi categorie. L'articolo non viene pubblicato se la cat.non è presente Public post_status As String 'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | custom registered status ] //Set the status of the new post. End Structure Public Interface IgetCatList <CookComputing.XmlRpc.XmlRpcMethod("metaWeblog.newPost")> _ Function NewPost(ByVal blogId As Integer, ByVal strUserName As String, ByVal strPassword As String, ByVal content As blogInfo, ByVal publish As Boolean) As String End Interface
Definizione della funzione che si occupa di popolare la struttura ed inviare i dati:
Public clientProtocol As XmlRpcClientProtocol Public categories As IgetCatList Shared Function newBlogPostSend(sUtente As String, sPassword As String, sUrl As String, sTitolo As String, sMessaggio As String, arrayCategorie() As String, sStatus As String) As String Dim clientProtocol As XmlRpcClientProtocol Dim categories As IgetCatList 'RIEMPIMENTO DELLA STRUTTURA DATI Dim newBlogPost As blogInfo = Nothing newBlogPost.title = sTitolo 'valori possibili. Vedere anche sopra, nella definizione della struttura 'Draft','Pending Review','Private','Published' newBlogPost.post_status = sStatus newBlogPost.description = sMessaggio 'Dim cats() As String = {"Download"} newBlogPost.categories = arrayCategorie categories = CType(XmlRpcProxyGen.Create(GetType(IgetCatList)), IgetCatList) clientProtocol = CType(categories, XmlRpcClientProtocol) clientProtocol.Url = sUrl Dim result As String = Nothing result = "" Try 'l'ultimo parametro "True" indica che il post deve essere pubblicato result = categories.NewPost(1, sUtente, sPassword, newBlogPost, True) 'se >0 ok Return result Catch ex As Exception MessageBox.Show(ex.Message) End Try End Function
Questo è un progetto di esempio completo e funzionante con WordPress 3.3.1:
[Download not found]