Pythonで動的に記事を作成して、自動でWordPressに投稿したいことってあるよね。
Pythonをタスクスケジューラとかで自動で起動すれば、起動ー記事作成ー投稿までが全部自動でできる。仕組みさえ作ってしまえば、寝てる間に勝手に記事ができる。最高じゃないですか。ということで、ここではPythonからWordPressに記事投稿する方法を紹介するよ。
流れ
xmlrpcパッケージがあるので、こちらを使うと楽ちんです。まずはとりあえずこれを入れましょう。
xmlrpcとは、xmlの仕組みを使ってWordPress(などのwebサービス)の管理画面に、ログインせずにリモート操作する仕組みのことを言います。
これを使って、記事のタイトルや投稿内容をテキスト形式で指定して、 WordPressのURL、ID、パスワードを設定して実行するだけ。
パッケージのインストールは python > 設定 > プロジェクト・インタープリター で
“wordpress-xmlrpc”で検索すればでてくる。
その他の前提条件としては、Python、WordPressの環境があればOK。
実際にやってみる
実行環境
- Windows10
- Python 3.7
- wordpress_xmlrpc 2.3
サンプルコードはこちら。
# パッケージのインポート
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
# 投稿データ作成
post = WordPressPost()
post.title = "タイトルだよん" # titleを入力
post.content = "" # 投稿内容を入力
post.post_status = "draft" # publish:公開、draft:下書き
post.terms_names = {
"category": ["Python", "WordPress"], # カテゴリーを設定
"post_tag": ["Python", "WordPress"], # タグを設定
}
post.slug = "post-using-python" # URLスラッグを設定
# WordPressに投稿
wp = Client(WORDPRESS_URL, WORDPRESS_ID, WORDPRESS_PW) # URL、ID、パスワードを設定
wp.call(NewPost(post))
実行した結果
下書きで投稿されており、カテゴリー・タグも正しく反映されてることが確認できる。
嬉しいこと
冒頭で触れているとおり、記事タイトルや中身をPythonで動的に生成することで、コンテンツ作成からWordPressの投稿まですべて自動化可能。
コンテンツの自動生成はスクレイピングと組み合わせるとかなり幅が拡がると思う。コンテンツの種類から内容まで。
その他、wordpress-xmlrpcの仕様詳細は公式ドキュメントを参照されたし。サイドバーの”WordPress Objects”を押すと詳細が確認できる。
WordPressでパーマリンクを%postnameにしている人は、slugになにも設定しないとタイトル名がURLスラッグに設定されてしまう。URLに日本語が含まれることをよしとしない人にとっては、slugでURLスラッグ設定できるのはありがたいだろう。
Pythonをもっと使いこなしたい人は。
コメント