9ml

WP REST API

endpoint

https://xxx.com/wp-json/wp/v2/posts
https://xxx.com/wp-json/wp/v2/posts/{post id}
https://xxx.com/wp-json/wp/v2/posts?per_page=10&page=3

記事の取得

<div id='wrap'></div>

<script>
document.addEventListener('DOMContentLoaded', function(){
	fetch('https://xxx.com/wp-json/wp/v2/posts')
    	.then(response => response.json())
    	.then(posts => {
        	console.log(posts);
        	const wrap = document.getElementById('wrap');
        	posts.forEach(post => {
            	const div = document.createElement('div');
            	div.classList.add('post');
            	div.innerHTML = `
                	<h2>${post.title.rendered}</h2>
                	<time>${new Date(post.date).toLocaleDateString()}</time>
                	<a href='${post.link}'>see more</a>
            	`;
				wrap.appendChild(div);
        	});
    	})
		.catch(error => console.log('失敗したよ:' + error));
});
</script>

※取得元のサイトがWordPressを使っていない場合はスクレイピング(PHPやPYTHON)を使用

記事の投稿(途中)

<?php
    # アップロード先
    $wp_url = 'https://xxx.com';
    # アップロードするファイルのある場所
    $upload_img = __DIR__.'/download/';
    # 画像ファイル名
    $upload_img = 'sample.jpg';
    
    $file_info = new finfo(FILEINFO_MIME_TYPE);
    $file_mime = $file_info->file($file_tmp);

    $request_header = [
        'Authorization: Basic' . base64_encode('{API投稿ユーザー名}' . ':' . '{設定したAPI用のパス}'),
        'Content-Disposition: attachment; filename="%s"' . $file_name,
        'Content-Type:' . $file_mime,
    ];


    # API叩く
    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $base_url.'/wp-json/wp/v2/media');
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $request_header);
    curl_setopt($curl, CURLOPT_SSL_VERIFYEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSPER, true);

    $result = curl_exec($curl);
    curl_close($curl);


    # 成功すればIDとかが返ってくるので取っておく
    $media_id = '';
    if (empty($result)) {
        echo "画像ID>失敗" . PHP_EQL;
        end();
    }

    $media_id = json_decode($result, true)['id'];
    echo "画像ID>" . $media_id . PHP_EQL;

?>

記事の投稿はデスクトップのtest.phpをVisualStudioCodeで開いてVSCode上で実行する。その際に、PHPをダウンロードし、PHPをシステムの環境パスに通す必要がある。システム環境パスの通し方は以下の通り。

手順 1: PHPのインストールパスを確認

  1. PHPを解凍した場所(例えば、C:\Users\YourUsername\Documents\php)を確認します。
  2. php.exeがあるディレクトリ(通常は解凍したフォルダの中)をメモします。

手順 2: 環境変数にPHPのパスを追加

  1. スタートメニューを開き、「環境変数」と入力して、「システム環境変数の編集」を選択します。
  2. システムのプロパティウィンドウが開いたら、下の方にある「環境変数(N)…」ボタンをクリックします。
  3. 環境変数ウィンドウで、システム環境変数セクションにある「Path」を選択し、「編集」をクリックします。
  4. 編集環境変数ウィンドウで、「新規」ボタンをクリックして、PHPを解凍したフォルダ(例: C:\Users\YourUsername\Documents\php)を追加します。フォルダのパスはphp.exeがある場所です。例:plaintextコードをコピーするC:\Users\YourUsername\Documents\php
  5. OK」をクリックして、すべてのウィンドウを閉じます。

手順 3: ターミナルを再起動して確認

  1. 新しいターミナルを開きます。既に開いているターミナルウィンドウを閉じ、再度開くことで、新しく設定された環境変数を反映させます。
  2. php -v コマンドを再度入力して、PHPのバージョン情報が表示されるか確認します。shコードをコピーするphp -v

その後、ドキュメントのphpフォルダを開くとphp.ini-developmentとphp.ini-productionというファイルがあるが、php.ini-developmentをphp.iniにリネームし、php.iniを開いて「;extension=fileinfo」のコメントアウトを外す。(extension=fileinfoとする)。

ホームに戻る