Lua
Lua
WordPress Create Post
See more WordPress Examples
Demonstrates how to create a WordPress post.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local http = chilkat.Http.new()
-- Use your WordPress login, such as "admin", not the application name.
http.login = "wp_username"
-- Use the application password, such as "Nths RwVH eDJ4 weNZ orMN jabq"
-- See WordPress Application Passwords Plugin
http.password = "app_password"
http.basic_auth = true
-- 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
local json = chilkat.JsonObject.new()
json:update_string("title", "This is a test post")
json:update_string("content", "<p>This is the HTML body of my post</p>")
-- The status can be "draft" or "publish"
json:update_string("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.
local tagIdx = 0
json.i = tagIdx
-- When Chilkat sees the literal string "[i]" in the JSON path, it replaces the "i" with the value of the "I" property.
json:update_int("tags[i]", 56)
tagIdx = tagIdx + 1
json.i = tagIdx
json:update_int("tags[i]", 75)
-- ..
local resp = chilkat.HttpResponse.new()
local success = http:http_json("POST", "https://cknotes.com/wp-json/wp/v2/posts", json, "application/json", resp)
if not success then
print(http.last_error_text)
return
end
if resp.status_code ~= 201 then
print(resp.body_str)
print("status code = " .. resp.status_code)
return
end
local jResp = chilkat.JsonObject.new()
jResp:load(resp.body_str)
print("Post ID = " .. jResp:int_of("id"))
print("Post URL = " .. jResp:string_of("link"))