記事の投稿(途中)

API

今回はPHPで投稿します。

記事の投稿はデスクトップの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とする)。

<?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;

?>

BACK