下記記事に詳しく投稿方法が掲載されている。記事のメモ。
WP API and OAuth – Using WordPress without WordPress
WordPressでRESTを有効にするプラグイン「WP REST API(Version 1.2.3)1」と
認証を行うプラグイン「WP-API/OAuth1」を使う。
投稿の取得は認証の必要はなくWP REST APIを有効しGETリクエストすればレスポンス(JSON形式)として投稿内容を取得できる。
投稿一覧の取得例
http://www.example.com/wp-json/posts
投稿や削除はOAuthでクライアントを認証する。
OAuth1でクライアントを認証するメモ。
key/secretはWP-CLIで発行する2。
$ wp oauth1 add
ID: 1718
Key: gOmxpyafVeSr
Secret: xc4OFIoz5VsWAS8wHifz6U1498FuF9fXFmfiiisRmVrbxMwG
ComposerでHTTPクライアントGuzzleをインストール3
composer.json
{
"require": {
"guzzlehttp/guzzle": "~5",
},
"require-dev": {
"guzzlehttp/oauth-subscriber": "0.2.*",
"symfony/var-dumper": "^2.7"
}
}
インストール
$ composer install
WordPressは外部へのリダイレクトを禁止しているのでfunctions.phpへ許可の記述を行う。
(リダイレクト先がhttp://www.example.com:8080/callback.phpの例。)
add_filter('http_request_host_is_external', 'allow_my_custom_host', 10, 3);
function allow_my_custom_host($allow, $host, $url) {
if ($url == 'http://www.example.com:8080/callback.php') {
$allow = true;
}
return $allow;
}
WordPressはURLの妥当性チェック(wp_http_validate_url)で80, 443, 8080以外のポート番号に対してfalseを返す。
最初クライアントのポート番号を8888にしており認証時にInvalid URLのエラーが起きた。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。