実行するとすべての記事が削除されますので、注意してください。
目次
コード
import os
import requests
from requests.auth import HTTPBasicAuth
# WordPressの設定
WORDPRESS_URL = "https://example.com/wp-json/wp/v2/posts"
USERNAME = os.environ["WORDPRESS_USERNAME"]
APP_PASSWORD = os.environ["WORDPRESS_APP_PASSWORD"]
def fetch_posts(base_url, auth, per_page=100):
"""
すべての投稿を取得する
"""
posts = []
page = 1
while True:
url = f"{base_url}?per_page={per_page}&page={page}"
response = requests.get(url, auth=auth)
if response.status_code != 200:
print(f"Error fetching posts (page {page}): {response.status_code}")
break
data = response.json()
posts.extend(data)
if len(data) < per_page: # 最後のページに到達
break
page += 1
return posts
def delete_post(base_url, auth, post_id):
"""
指定された投稿を削除する
"""
url = f"{base_url}/{post_id}"
response = requests.delete(url, auth=auth)
if response.status_code == 200:
print(f"投稿 (ID: {post_id}) を削除しました。")
else:
print(f"投稿 (ID: {post_id}) の削除に失敗しました:", response.text)
def delete_all_posts(base_url, auth):
"""
すべての投稿を削除する
"""
posts = fetch_posts(base_url, auth)
if not posts:
print("削除する投稿はありません。")
return
for post in posts:
delete_post(base_url, auth, post['id'])
if __name__ == "__main__":
# 認証情報の設定
auth = HTTPBasicAuth(USERNAME, APP_PASSWORD)
# すべての投稿を削除
delete_all_posts(WORDPRESS_URL, auth)
使い方
スクリプトをファイルとして保存し、実行する。requestsライブラリのインストールが事前に必要。
また、以下を環境変数として登録している(テストするだけならハードコーディングでもよい)
WORDPRESS_USERNAMEWORDPRESS_APP_PASSWORD
アプリパスワードについては以下の記事を参照。
あわせて読みたい


WordPressでアプリパスワードを取得する操作手順
この記事では、WordPressのアプリケーションパスワード機能を使用して、REST APIにアクセスするための手順を解説します。REST APIを通じてWordPressのデータにアクセス...