Xbase++
Xbase++
WordPress Create Post
See more WordPress Examples
Demonstrates how to create a WordPress post.Chilkat Xbase++ Downloads
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()