PythonでWordPressに投稿する①コード(記事、画像配置、カテゴリー、タグ)
Contents
request ライブラリインストール
request ライブラリを使って、Pythonによる記事の投稿や更新ができます。
コマンドを入力して実行します。
pip install requests
ワードプレスでパスワード設定する
管理画面>ユーザー>「アプリケーションパスワード」の設定
※再表示されないと思われるので、忘れないようにメモしておきましょう。
投稿するためのPython基本コード
WordPressで設定したパスワードと投稿者名を使う
コードは以下のとおりです。(この場合は登録されている画像使用になります)
import requests
from requests.auth import HTTPBasicAuth
# WordPressのREST APIのエンドポイント
endpoint = 'あなたのTOPページURL/wp-json/wp/v2/posts'
# 認証情報
username = 'ワードプレスの投稿名'
password = 'ワードプレスで自動作成されたパスワード'
# 下書きとして投稿するデータ
data = {
'title': '入れたいタイトル',
'content': '記事の中身',
'status': 'draft' # draft=下書き、publish=公開 省略時はdraftになる
'categories': 'ワードプレスで自動作成されたカテゴリーのID',
'tags': 'ワードプレスで自動作成されたタグのID',
'featured_media': 'ワードプレスで自動作成された画像のID'
}
# POSTリクエストで下書き投稿
response = requests.post(endpoint, json=data, auth=HTTPBasicAuth(username, password))
# リクエストが成功したか確認
if response.status_code == 201: # 201 Createdが返されることを期待
post = response.json()
print('下書きが作成されました。ID:', post['id'])
else:
print(f"リクエストが失敗しました。ステータスコード: {response.status_code}")
print(response.text)
追記:投稿内容の見出しやなどの設定する書き方
下記のように書いていきます
# 投稿データ
data = {
'title': 'タイトル部分',
'content': '<h1>大見出し H1</h1><p>コンテンツの段落。</p><h2>小見出し H2</h2><p>さらに別のコンテンツの段落。</p><h3>小見出し H3</h3>',
'status': 'draft',
'categories': 5,
'tags': 6,
'featured_media': media_id # ここでサムネイル画像を設定
}
追記:画像の新規アップロードとサムネイル設定
画像を新規アップロードとサムネイルに設定したい場合は下記のコードを使います
import os
import requests
from requests.auth import HTTPBasicAuth
# 認証情報
username = 'ワードプレスの投稿名'
password = 'ワードプレスで自動作成されたパスワード'
# WordPressのREST APIのエンドポイント
posts_endpoint = 'https://あなたのTOPページURL/wp-json/wp/v2/posts'
media_endpoint = 'https://あなたのTOPページURL/wp-json/wp/v2/media'
# アップロードする画像のファイルパス
image_path = './画像の名前.jpg' # 実際の画像ファイルのパスに置き換えてください
# 画像ファイルのアップロード
with open(image_path, 'rb') as img:
file_name = os.path.basename(image_path)
headers = {
'Content-Disposition': f'attachment; filename={file_name}'
}
img_response = requests.post(media_endpoint, headers=headers, files={'file': img}, auth=HTTPBasicAuth(username, password))
# アップロードが成功したか確認
if img_response.status_code == 201:
media_id = img_response.json()['id']
print('画像がアップロードされました。Media ID:', media_id)
# 投稿データ
data = {
'title': 'testタイトル部分',
'content': '<h1>大見出し H1</h1><p>コンテンツの段落。</p><h2>小見出し H2</h2><p>さらに別のコンテンツの段落。</p><h3>小見出し H3</h3>',
'status': 'draft',
'categories': 5,
'tags': 6,
'featured_media': media_id # ここでサムネイル画像を設定
}
# POSTリクエストで下書き投稿
response = requests.post(posts_endpoint, json=data, auth=HTTPBasicAuth(username, password))
# リクエストが成功したか確認
if response.status_code == 201: # 201 Createdが返されることを期待
post = response.json()
print('下書きが作成されました。ID:', post['id'])
else:
print(f"リクエストが失敗しました。ステータスコード: {response.status_code}")
print(response.text)
else:
print(f"画像のアップロードが失敗しました。ステータスコード: {img_response.status_code}")
print(img_response.text)
追記:コンテンツ内に画像をいれるには
H2の後に別の画像を新規アップロードして追加する部分を追記しました。
コンテンツ内に追加する画像のパスを追記
# アップロードする画像のファイルパス
image_path1 = './実際のサムネイル画像.jpg'
image_path2 = './実際にコンテンツ内に追加する画像.jpg'
コンテンツ内に画像をいれるために追記する項目
# サムネイル画像のアップロード
media_id1, _ = upload_image(image_path1)
# コンテンツ内に挿入する画像のアップロード
_, media_url2 = upload_image(image_path2)
if media_id1 and media_url2:
# 投稿データ
data = {
'title': 'testタイトル部分',
'content': f'<h1>大見出し H1</h1><p>コンテンツの段落。</p><h2>小見出し H2</h2><p>さらに別のコンテンツの段落。</p><img src="{media_url2}" alt="Image" /><h3>小見出し H3</h3>',
'status': 'draft',
'categories': 5,
'tags': 6,
'featured_media': media_id1 # サムネイル画像を設定
}
追加・修正点
upload_image
関数:- 画像をアップロードして
media_id
とsource_url
を取得する関数を作成しました。
- 画像をアップロードして
- 画像のアップロード:
image_path1
の画像をサムネイルとして、image_path2
の画像をコンテンツ内に挿入するために、それぞれアップロードしています。
content
に画像を挿入:h2
タグの後に、アップロードしたimage_path2
の画像をimg
タグとして追加しています。
これにより、記事のサムネイルに1つ目の画像が設定され、2つ目の画像が記事のh2
タグの後に挿入されます。
進化系はこちら▼
ディスカッション
コメント一覧
まだ、コメントがありません