more vba and wordpress xml rpc

Basic Example II, vba wordpress remote control, demo.ayHello is fun but quite useless, so let’s proceed to wp.getUsersBlogs.

I make a table in access (id, isAdmin, blogid, url, blogName, xmlrpc) and then query wordpress, parse the xml response in store it in the database.

So here we go query WordPress :

    methodname = "wp.getUsersBlogs"

'xmlrpc url
    txtURL = "http://www.blog.com/xmlrpc.php"

'authorization
    txtUserName = "user"
    txtPassword = "pass"

'XML http request  
    Dim objSvrHTTP As ServerXMLHTTP
    Dim strT As String
    Set objSvrHTTP = New ServerXMLHTTP
    
    objSvrHTTP.Open "POST", txtURL, False, CStr(txtUserName), _
     CStr(txtPassword)
    
    objSvrHTTP.setRequestHeader "Accept", "application/xml"
    objSvrHTTP.setRequestHeader "Content-Type", "application/xml"

'here is the bit with the wp.getUserBlogs methodname, 
'and the username and password    
    strT = ""
    strT = strT & ""
    strT = strT & "" & methodname & ""
    strT = strT & ""
    strT = strT & "" & txtUserName & ""
    strT = strT & "" & txtPassword & ""
    strT = strT & ""
    strT = strT & ""
    
    objSvrHTTP.send strT

that’s pretty straight forward.

I get an xml message back with the data stored in an array of STRUCT types.

'Create the DomDocument Object
Dim oDoc As MSXML2.DOMDocument
Set oDoc = CreateObject("MSXML2.DOMDocument")
oDoc.async = False
oDoc.validateOnParse = False

'Load the response in the DomDocument Object
Dim fSuccess As Boolean
fSuccess = oDoc.loadXML(objSvrHTTP.responseText)
If Not fSuccess Then
    MsgBox "failed"
    Exit Function
End If
        
'counters
ct = 1
cs = 1

'array to story the field values
Dim SArray(1 To 5) As String

'open the table as recordset 
Dim d As DAO.Recordset
Set d = CurrentDb.OpenRecordset("blogs", dbOpenTable)

'lets get the structs
Set oChildren = oDoc.selectNodes("//struct")
For Each oStruct In oChildren

'the struct has members, 

   Set Members = oStruct.childNodes
   For Each Member In Members

'each member has a param pair (field, value)
'skip the first param, and store the field value
'in an array

       Set Params = Member.childNodes
       For Each Param In Params
            ct = ct + 1
            If ct / 2 <> Int(ct / 2) Then
                SArray(ct / 2) = Param.Text
                cs = cs + 1
            End If
       Next

    Next

    'we got the struct data, 
    'now add the array to the database
    
     With d
        .AddNew
        !isAdmin = SArray(1)
        !url = SArray(2)
        !blogid = SArray(3)
        !blogName = SArray(4)
        !xmlrpc = SArray(5)
        .Update
    End With

Next

'close up shop
d.Close
Set d = Nothing

End Function

The other worpdress api calls work quite the same.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top