スポンサーリンク

WordPress自動化ガイド:PythonでCSVデータをアップロードして記事を更新する方法

スポンサーリンク

はじめに

Woredpressで特定の記事の特定のデータを、自動で更新する仕組みが見つけられなかったので、
Pythonコードを作りました

WordPressにCSVファイルをアップロードする

まず、WordPressサイトにCSVファイルをアップロードする方法から始めます。これには、WordPress REST APIのメディアエンドポイントを使用し、基本認証を通じてファイルをアップロードします。ここではPythonを使用して、この処理を自動化する方法を示します。


import requests
import base64
import json
import os

directory = r"path_to_your_directory"

def read_credentials(file_path):
    with open(file_path, 'r') as file:
        lines = file.read().splitlines()
        credentials = dict(line.split(':') for line in lines)
    return credentials

def upload_file(credentials, file_path, wordpress_site):
    file_name = os.path.basename(file_path)
    media_endpoint = f"{wordpress_site}/wp-json/wp/v2/media"
    headers = {
        "Authorization": f"Basic {token}",
        "Content-Disposition": f"attachment; filename={file_name}",
        "Content-Type": "text/csv"
    }
    with open(file_path, 'rb') as file:
        response = requests.post(media_endpoint, headers=headers, data=file)
        return response.json()['guid']['rendered']

credentials_file = directory+'your_credentials_file.txt'
url_file = directory+'your_data_url_file.txt'

credentials = read_credentials(credentials_file)
wordpress_site = "https://example.com"
post_id = 123
token = base64.b64encode(f"{credentials['user']}:{credentials['password']}".encode()).decode()

new_file_path = directory+'bank_data.csv'
new_bank_data = upload_file(credentials, new_file_path, wordpress_site)

このコードでは、まずWordPressのユーザー名とパスワードを用いて資格情報を設定し、指定されたCSVファイルをサイトにアップロードしています。

アップロードしたデータを記事に反映させる

次に、アップロードされたファイルのURLを取得し、特定の記事の内容を更新する部分です。既存の記事から古いデータのURLを新しいものに置き換え、記事を更新します。


def read_old_url(file_path):
    with open(file_path, 'r') as file:
        return file.read().split('=')[1].strip()

def update_data_url_file(file_path, new_url):
    with open(file_path, 'w') as file:
        file.write(f"old_url={new_url}")

old_url = read_old_url(url_file)

post_endpoint = f"{wordpress_site}/wp-json/wp/v2/posts/{post_id}"
headers = {"Authorization": f"Basic {token}"}
response = requests.get(post_endpoint, headers=headers)
post_content = response.json()['content']['rendered']

updated_content = post_content.replace(old_url, new_bank_data)

data = {"content": updated_content}
update_response = requests.post(post_endpoint, headers=headers, json=data)

if update_response.status_code == 200:
    print("Post updated successfully.")
    update_data_url_file(url_file, new_bank_data)
else:
    print(f"Failed to update post. Status code: {update_response.status_code}")

このステップでは、まずアップロードしたCSVファイルの新しいURLを取得し、それを使って特定の記事(投稿)の内容を更新しています。成功すれば、新しいURLをローカルのファイルに保存し、自動更新のプロセスが完了します。

まとめ

この手法を用いることで、WordPressサイトのデータを簡単に更新でき、時間と労力を節約できます。特に定期的に更新する必要があるデータやファイルを扱う場合に便利です。また、REST APIを活用することで、サイトのコンテンツ管理をより効率的に行うことが可能になります。

自動化はウェブサイトの管理を簡素化し、エラーのリスクを減らすのに役立ちます。このガイドがあなたのWordPress管理作業を効率化する一助となれば幸いです。

コメント

タイトルとURLをコピーしました