{"id":"yPIST7l13huQEjY5","meta":{"instanceId":"workflow-83e69afb","versionId":"1.0.0","createdAt":"2025-09-29T07:07:43.937110","updatedAt":"2025-09-29T07:07:43.937116","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"Use XMLRPC via HttpRequest-node to post on Wordpress.com","nodes":[{"id":"8a64ffca-804a-4793-a721-3cb670aec22f","name":"Settings","type":"n8n-nodes-base.set","position":[-380,-700],"parameters":{"options":{},"assignments":{"assignments":[{"id":"1be018c7-51fe-4ea2-967d-ce47a2e8795c","name":"wordpressUrl","type":"string","value":"YOURBLOG.wordpress.com"},{"id":"95377f4f-184b-46a7-94c7-b2313c314cb2","name":"wordpressUsername","type":"string","value":"YourUserName"},{"id":"fdc99dc6-d9b0-4d2f-b770-1d8b6b360cad","name":"wordpressApplicationPassword","type":"string","value":"your 4app pass word"},{"id":"5aee5eef-9ad2-4dfb-a63f-1b5228c47e31","name":"contentTitle","type":"string","value":"This is a demo title"},{"id":"2abf516c-2910-4cd0-89fe-119cd0e616c8","name":"contentText","type":"string","value":"This is the main text."}]}},"typeVersion":3.4,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"157b9656-5d90-44f4-aa3c-1285cda698d8","name":"ManualTrigger","type":"n8n-nodes-base.manualTrigger","position":[-580,-700],"parameters":{},"typeVersion":1,"notes":"This manualTrigger node performs automated tasks as part of the workflow."},{"id":"1d2f6916-e5bd-497b-9843-8bb5a48e9866","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-420,-820],"parameters":{"width":180,"height":360,"content":"## Settings"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"1306446a-f628-44ba-9ca5-751b634bd5dd","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[140,-820],"parameters":{"color":5,"width":720,"height":360,"content":"## Response Handling"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"ec3006aa-34c8-4522-8c37-980f68f168b5","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-220,-820],"parameters":{"color":3,"width":340,"height":360,"content":"## Request Sending"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"bc918075-bea5-4a27-90d9-874b0917a958","name":"Success","type":"n8n-nodes-base.noOp","position":[660,-780],"parameters":{},"typeVersion":1,"notes":"This noOp node performs automated tasks as part of the workflow."},{"id":"3ea541b7-080e-4694-b865-d7d04f69ea0c","name":"Error","type":"n8n-nodes-base.noOp","position":[660,-620],"parameters":{},"typeVersion":1,"notes":"This noOp node performs automated tasks as part of the workflow."},{"id":"457c0687-ac1d-49e2-b434-6e1de9acb3a3","name":"PrepareXML","type":"n8n-nodes-base.code","notes":"(request payload, escaping)","position":[-180,-700],"parameters":{"mode":"runOnceForEachItem","jsCode":"const input = $json; // If other nodes are in between: $('Settings').item.json;\n\nconst username = input.wordpressUsername;\nconst password = input.wordpressApplicationPassword;\nconst title = input.contentTitle;\nconst text = input.contentText;\n\nconst blogId = 0;\nconst published = 1; // 0 = draft, 1 = published\n\n\n// Helper function to escape XML special characters\nfunction escapeXml(unsafe) {\n  return unsafe.replace(/[<>&'\"]/g, (c) => {\n    switch (c) {\n      case '<': return '&lt;';\n      case '>': return '&gt;';\n      case '&': return '&amp;';\n      case '\\'': return '&apos;';\n      case '\"': return '&quot;';\n      default: return c;\n    }\n  });\n}\n\n// Your actual post text, which may contain characters needing escaping\nconst titleEscaped = escapeXml(title);\nconst textEscaped = escapeXml(text);\n\n// Build the XML payload\nconst xmlData = `<?xml version=\"1.0\"?>\n<methodCall>\n  <methodName>wp.newPost</methodName>\n  <params>\n    <param>\n      <value><string>${blogId}</string></value>\n    </param>\n    <param>\n      <value><string>${username}</string></value>\n    </param>\n    <param>\n      <value><string>${password}</string></value>\n    </param>\n    <param>\n      <value>\n        <struct>\n          <member>\n            <name>post_title</name>\n            <value><string>${titleEscaped}</string></value>\n          </member>\n          <member>\n            <name>post_content</name>\n            <value><string>${textEscaped}</string></value>\n          </member>\n        </struct>\n      </value>\n    </param>\n    <param>\n      <value><boolean>${published}</boolean></value>\n    </param>\n  </params>\n</methodCall>`;\n\n\n// Add a new field called 'myNewField' to the JSON of the item\n$input.item.json.xmlRequestBody = xmlData;\n\nreturn $input.item;"},"notesInFlow":true,"typeVersion":2},{"id":"3f29f3ed-f7ae-475b-bce3-04d3eeeacee9","name":"PostRequest","type":"n8n-nodes-base.httpRequest","position":[-20,-700],"parameters":{"url":"{{ $env.BASE_URL }}","body":"={{ $json.xmlRequestBody }}","method":"POST","options":{},"sendBody":true,"contentType":"raw","sendHeaders":true,"rawContentType":"text/xml","headerParameters":{"parameters":[{"name":"Content-Type","value":"text/xml"}]}},"typeVersion":4.2,"notes":"This httpRequest node performs automated tasks as part of the workflow."},{"id":"5f320d9b-8aa9-4d13-83db-86acaf444e92","name":"IsSuccessful","type":"n8n-nodes-base.if","position":[420,-700],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"815d85a1-8f91-4338-977f-503f02c53ea2","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.methodResponse.params.param.value }}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2,"notes":"This if node performs automated tasks as part of the workflow."},{"id":"3a37d19a-12d3-474b-840f-c09342eecca9","name":"HandleResponse","type":"n8n-nodes-base.xml","position":[220,-700],"parameters":{"options":{}},"typeVersion":1,"notes":"This xml node performs automated tasks as part of the workflow."}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"78f90dc5-6209-4db0-b6c6-9f2324488605","connections":{"PostRequest":{"main":[[],[],[],[],[]]}},"description":"Automated workflow: Use XMLRPC via HttpRequest-node to post on Wordpress.com. This workflow integrates 9 different services: stickyNote, httpRequest, code, set, stopAndError. It contains 13 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: Use XMLRPC via HttpRequest-node to post on Wordpress.com. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}