Sample code for 30+ languages & platforms
Dart

WordPress Create Post

See more WordPress Examples

Demonstrates how to create a WordPress post.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

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

  final http = CkHttp();

  // 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.basicAuth = 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

  final json = CkJsonObject();
  json.updateString('title', 'This is a test post');
  json.updateString('content', '<p>This is the HTML body of my post</p>');
  // The status can be "draft" or "publish"
  json.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.
  var 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.updateInt('tags[i]', 56);
  tagIdx++;
  json.i = tagIdx;
  json.updateInt('tags[i]', 75);
  // ..

  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', 'https://cknotes.com/wp-json/wp/v2/posts', json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  if (resp.statusCode != 201) {
    print(resp.bodyStr);
    print('status code = ${resp.statusCode}');
    return;
  }

  final jResp = CkJsonObject();
  jResp.load(resp.bodyStr);
  print('Post ID = ${jResp.intOf('id')}');
  print('Post URL = ${jResp.stringOf('link')}');
}