Sample code for 30+ languages & platforms
Xbase++

WordPress Create Post

See more WordPress Examples

Demonstrates how to create a WordPress post.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oJson
LOCAL nTagIdx
LOCAL oResp
LOCAL oJResp

nSuccess := 0

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

oHttp := CreateObject("Chilkat.Http")

//  Use your WordPress login, such as "admin", not the application name.
oHttp:Login := "wp_username"
//  Use the application password, such as "Nths RwVH eDJ4 weNZ orMN jabq"
//  See WordPress Application Passwords Plugin
oHttp:Password := "app_password"
oHttp:BasicAuth := 1

//  Note: For this to work, you'll likely need to update your .htaccess file on your WordPress server.
//  Otherwise you'll get this error:
//  
//  401 : Sorry, you are not allowed to create posts as this user
//  
//  Your default .htaccess file probably looks like this:
//  
//  <IfModule mod_rewrite.c>
//  RewriteEngine On
//  RewriteBase /
//  RewriteRule ^index\.php$ - [L]
//  RewriteCond %{REQUEST_FILENAME} !-f
//  RewriteCond %{REQUEST_FILENAME} !-d
//  RewriteRule . /index.php [L]
//  </IfModule>
//  # END WordPress
//  
//  Add the following line immediately after the "RewriteEngine On" line:    RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
//  Your .htaccess file should look like this after the edit:
//  
//  <IfModule mod_rewrite.c>
//  RewriteEngine On
//  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
//  RewriteBase /
//  RewriteRule ^index\.php$ - [L]
//  RewriteCond %{REQUEST_FILENAME} !-f
//  RewriteCond %{REQUEST_FILENAME} !-d
//  RewriteRule . /index.php [L]
//  </IfModule>
//  # END WordPress

oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateString("title", "This is a test post")
oJson:UpdateString("content", "<p>This is the HTML body of my post</p>")
//  The status can be "draft" or "publish"
oJson:UpdateString("status", "draft")

//  Add tags -- but you need to know the ID of an existing tag.
//  See Chilkat's other WordPress example for creating a tag, or getting the ID of an existing tag.
nTagIdx := 0
oJson:I := nTagIdx
//  When Chilkat sees the literal string "[i]" in the JSON path, it replaces the "i" with the value of the "I" property.
oJson:UpdateInt("tags[i]", 56)
nTagIdx := nTagIdx + 1
oJson:I := nTagIdx
oJson:UpdateInt("tags[i]", 75)
//  ..

oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpJson("POST", "https://cknotes.com/wp-json/wp/v2/posts", oJson, "application/json", oResp)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oJson:destroy()
    oResp:destroy()
    RETURN
ENDIF

IF (oResp:StatusCode != 201)
    ? oResp:BodyStr
    ? "status code = " + Str(oResp:StatusCode)
    oHttp:destroy()
    oJson:destroy()
    oResp:destroy()
    RETURN
ENDIF

oJResp := CreateObject("Chilkat.JsonObject")
oJResp:Load(oResp:BodyStr)
? "Post ID = " + Str(oJResp:IntOf("id"))
? "Post URL = " + oJResp:StringOf("link")

oHttp:destroy()
oJson:destroy()
oResp:destroy()
oJResp:destroy()