- Obsidian で書いた内容(Markdown ファイル)を、Mac ターミナルからワードプレスに投稿したかった
- WP-CLI を使えば実現できるらしい
- WP-CLI を使うと、ワードプレスのインストールから何から何まで一通りできる様子であった
- ただ、今回はすでに MAMP 環境にインストールしているワードプレスがあったので、そちらで触ってみた
- ある程度用途は限定されるかもしれないが、「いちいちブラウザを操作して」といったフローがごっそり無くなり、サクサク記事の登録・更新ができたので便利
インストール
- 公式サイトの手順に沿って実施
- ターミナルで php コマンドが使えなかったので Homebrew よりインストール
wp-config 修正
- MAMP 環境だったので、データベースのホスト名は以下となっていた
define( 'DB_HOST', 'localhost' );
- これを以下に書き換え
define( 'DB_HOST', 'localhost:/Applications/MAMP/tmp/mysql/mysql.sock' );
ディレクトリ移動
実践
新規投稿
wp post create '~/Dropbox/Obsidian/BLOG/python/こんにちは.md' --post_category=12 --post_title='こんにちは' --post_status=publish --post_author=1
記事更新
wp post update 1575 '~/Dropbox/Obsidian/BLOG/python/こんにちは.md'
登録記事一覧を取得
wp post list --format=csv --fields=ID,post_title > ~/Downloads/wp-file.csv
おまけ
- Obsidian で管理している Markdown ファイル(それぞれ格納しているフォルダ名 = カテゴリー名としている)の一覧を抽出して、上記のコマンド文を吐き出すという簡単な Python スクリプト
- ただし、
--post_category
は、カテゴリー ID(数値)
を指定する必要がある{'カテゴリー名': カテゴリーID}
と辞書で登録してループごとに取り出す
import os
def files_tolist_from_dir(dir):
files = os.listdir(dir)
files = [i for i in files if i[0] != '.'] # 不可視ファイル削除
files.sort() # 順番が保持されないのでソートをかける
return files
dir = '~/Dropbox/Obsidian/BLOG'
categories = files_tolist_from_dir(dir)
categories_id = {
'wordpress': 2,
'python': 3,
'javascript': 4,
'html': 5,
'css': 6,
'git-github': 7,
'shopify': 8,
'linux': 9,
'ruby': 10,
'hugo': 11,
'others': 12,
'tools': 13,
}
for category in categories:
markdown_files = files_tolist_from_dir(f'{dir}/{category}')
for markdown_file in markdown_files:
file_path = f'{dir}/{category}/{markdown_file}'
post_title = markdown_file.split('.md')[0]
sql = f"wp post create '{file_path}' --post_category={categories_id[category]} --post_title='{post_title}' --post_author=1"
p(sql)
参考