WordPress にシェルスクリプトで画像をアップ
WordPress はめちゃめちゃ使いやすくて好きなんだけど、なんか画像の差しこみが面倒に感じる。
これをちょっとでも楽にしようと思って、スクリプトを書いた。
WordPress における画像の保存場所
ftp ソフトでレンタルサーバに接続し、ワードプレスにおける画像の保存場所を捜してみる。
これ、ひとによって違うのかもしれないけど、わたしの場合は以下のアドレスのようだ。
ドメイン/public_html/wp-contetns/uploads/2019/09/
ドメインはサイトURL から http とかを取り除いたやつだ。例えばこのサイトならmac-ra.com
ということになる。最後のほうの/2019/09/
というのは画像をアップロードした年と月みたいだ。
ここに curl で画像をアップしてやりゃあいいことになる。
シェルスクリプト
📝 upimg.sh
#!/bin/bash
thisyear=`date "+%Y"`
thismonth=`date "+%m"`
USER='ユーザーネーム'
PASSWORD='パスワード'
HOSTNAME='ホストネーム'
UPLOAD_PATH=`echo 'ドメイン/public_html/wp-content/uploads/'"$thisyear"'/'"$thismonth"'/'`
for img in "$@"
do
FILENAME="$img"
curl -T "${FILENAME}" -u "${USER}":"${PASSWORD}" --ftp-create-dirs -ssl ftp://"${HOSTNAME}"/"${UPLOAD_PATH}"
BASENAME=`basename "$img"`
URL=`echo -n '![](サイトURL/wp-content/uploads/'"$thisyear"'/'"$thismonth"'/'"$BASENAME"')'`
echo "$URL" | pbcopy
echo "$URL"
done
ユーザーネーム、パスワード、ホストネーム、サイトURL はレンタルサーバを借りたとき、サーバの会社がくれるメールに書いてあるやつだ。使用する場合は適宜、書き換える必要がある。
また上述したようにUPLOAD_PATH
も、それぞれの環境にあわせて書き直す。
あと、レンタルサーバによっては curl お断りみたいなところもあるのかもしれない。
使い方など
スクリプトの使い方は、sh upimg.sh 画像ファイル
でリターン。
curl がただちに画像をアップロードしてくれる。
かつ、その画像のアドレスをマークダウンで返すことにした。
なんでマークダウンかというと、WordPress はバージョン 5 から、デフォルトでマークダウンを html にしてくれるようになったからである。だったら別に html タグで返してもいいんだけど、まぁ、ふだんからマークダウンで記事を書いているので、こうした。
curl のオプション--ftp-create-dirs
をつけると、該当のフォルダがない場合は自動で作ってくれる。オプション-ssl
で ssl 接続になる。
pbcopy
というコマンドは Mac 特有のもので、クリップボードになにかをコピーする、というものだ。
つまりマークダウンでブログの記事を書きながら、画像を挟む箇所にきたらおもむろに画像をアップして、コピーされた画像 URL をばすっとペーストするようにしたわけだ。
(画像ファイルを複数枚、一度にアップロードした場合は、最後の画像のアドレスだけがクリップボードに残る)
これで多少、記事投稿が楽になった。
しかしこのスクリプトにはひとつ、欠点がある。このスクリプトでアップした画像は、WordPress のダッシュボードの、メディア・ライブラリに表示されないのだ。
この点だけは注意。