1. TOPページ
  2. WordPress
  3. [WordPress]WP REST APIを使ってWordPressにログインせず外部から投稿する

[WordPress]WP REST APIを使ってWordPressにログインせず外部から投稿する

WordPressで管理画面にログインせず投稿する方法を調べたところ2つ方法を見つけたので、今回はそのうちのもう一つWP REST APIを使った投稿の記事です。

wp_insert_postの方では同じサーバーに投稿するPHPを置く必要がありますが、こちらは特に置く場所はどこでも大丈夫です。

プラグインをインストールする

api用のIDとパスワードを設定する必要があるので、「Application Passwords」をインストールします。

ここで設定したユーザーIDとパスワード(16文字)をメモしておきます。
そして投稿用のPHPに以下を記述します。コードは投稿用の最低限の記述です。

$url = 'https://xxxx/wp-json/wp/v2/posts'; //apiのURL(設置場所によるxxxxのドメイン部分を変更)
 
//Application Passwords
$username = '発行したユーザー';
$password = '発行されたパスワード';
    
//投稿データ
$data = [
 'title' => 'タイトル',
 'content' => '本文',
 'status' => 'publish',//投稿ステータス
 'author' => 1,//ユーザーID
 'slug' => 'slug',//パーマリンク
 'excerpt' => '概要',
 'categories' => array() //カテゴリを配列で
];
    
//認証のためのヘッダ情報
$header = ['Authorization: Basic ' . base64_encode($username . ":" . $password)];
    
// cURLのオプション設定
$option = [
 CURLOPT_URL => $url,
 CURLOPT_POST => true,// POST
 CURLOPT_POSTFIELDS => http_build_query($data),
 CURLOPT_HTTPHEADER => $header,
 CURLOPT_RETURNTRANSFER => true,
];

$ch = curl_init();
curl_setopt_array($ch, $option);
$response = curl_exec($ch);
curl_close($ch);

これで投稿ができます。
配列に入れる項目の一覧ページがwp_insert_postと同じく見つからなかったので、いろいろ探して上記の項目まではわかりました。

こちらもformを自前で作って入力等処理をして最後にこのコードで投稿すると色々な投稿ができますね。

前回のwp_insert_postと同じくWordPressにログインせず投稿可能になるので、セキュリティ的には他の人にアクセスされないように認証等かけておくと良いと思います。