【bash】wp-cliを使って記事を予約投稿するサンプル
wp-cliから記事を予約投稿するサンプル。
所定のフォルダに記事と画像ファイルを置いてshellを叩けば、CLIで投稿までやってくれる。
画像のプレースホルダーやカテゴリの設定などの都合でフォーマットにのっとっていないと動かないが、
サンプルとして参照するぶんには問題ない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
#====================変数==================== c_path_img=~/web/PostSources/img c_path_post=~/web/PostSources c_filename_conversiontable=~/web/tools/temp/temp_ConversionTable.txt c_filename_serchresult=~/web/tools/temp/temp_SearchResult.txt #====================処理==================== # ======空のファイル出力====== echo -n > $c_filename_conversiontable echo -n > ~/web/tools/log.txt echo ======画像フォルダ配下のファイルぶんループ処理====== i=0 for textfile in $( ls -F $c_path_img | grep -v /); do echo ======対象ファイル:${textfile}====== # ======wp-cliで画像をアップ====== echo ======wp-cliで画像をアップ====== img_id=$(wp media import $c_path_img/$textfile --alt=${textfile%.*}) echo 画像アップ結果:$img_id # ======戻り値からIDを切り出し====== echo ======戻り値からIDを切り出し====== echo img_id切り出し前 = $img_id img_id=${img_id##*"attachment ID "} echo img_id切り出し途中 = $img_id img_id=${img_id%%.*} echo img_id切り出し後 = $img_id # ======wp-cli db query でIDからURLを解決====== echo ======wp-cli db query でIDからURLを解決====== guid=$(wp db query "select guid from wp1_posts where ID=$img_id" --skip-column-names) echo $guid guid=${guid##*://b00k.jp} # 相対パスに変換 echo guid相対パス化:$guid # ======配列に画像名、ID、URLを格納====== echo ======配列に画像名、ID、URLを格納====== echo i = $i echo name:$textfile img_id:$img_id guid:$guid >> $c_filename_conversiontable # conversion_table[i]="$textfile $img_id $guid" i=$((++i)) # 画像ファイルをバックアップに移動 mv $c_path_img/$textfile $c_path_img/bk/$textfile done # ======記事フォルダ配下のファイルをループ処理====== echo ======記事フォルダ配下のファイルをループ処理====== for postfile in $( ls -F $c_path_post | grep -v /); do echo 処理ファイル名:$postfile <a><img class="alignnone size-medium wp-image-4618" alt="" /></a> echo -n > $c_filename_serchresult # 空ファイルを出力 grep -e 'xxximagexxx*' $c_path_post/$postfile > $c_filename_serchresult echo 検索結果ファイルの中身を参考に記事ファイルを1行ずつ変換していく numLine=1 cat $c_filename_serchresult | while read line; do echo $numLine: $line # 出力 echo 読み込んだ行でファイルを検索して変換 temp=${line##*"xxximagexxx"} # 画像IDのみ抽出 echo temp = $temp echo 画像IDからURLを解決 echo コマンド:grep -e $temp $c_filename_conversiontable temp_img_url=$(grep -e $temp $c_filename_conversiontable) # 画像IDでファイル検索 echo temp_img_url = $temp_img_url temp_alt_atr=${temp_img_url##*"name:"} temp_alt_atr=${temp_alt_atr%%" img_id:"*} temp_alt_atr=${temp_alt_atr%.*} #拡張子を削除 echo temp_alt_atr = $temp_alt_atr temp_img_url=${temp_img_url##*" guid:"} #イメージURLを取得 temp_img_url=${temp_img_url//\//\\/} #「/」をエスケープ echo temp_img_url = $temp_img_url echo 挿入するimgタグを生成 converted_img_tag="<a href="\"$temp_img_url\""><img class="\"alignnone" src="\"$temp_img_url\"" alt="\"$temp_alt_atr\"" /><\/a>" echo converted_img_tag = $converted_img_tag echo imgタグに入れ替え #temp_dit="sed -i -e s/$line/$converted_img_tag/g ~/web/PostSources/ #echo コマンド:$temp_dit #eval $temp_dit sed -i -e "s/$line/$converted_img_tag/g" ~/web/PostSources/$postfile numLine=$((numLine + 1)) # 行数を1増やす done done </a> |