見出し画像

PythonでのWordPressへの投稿(REST API)【WordPress】自動化の基本書

WordPressにダミーで記事を入れておく

予めダミーで記事を入れておいてください。
TESTでもなんでもいいです。

タグやカテゴリもいくつか設定しておいてください。

実際にアクセスしてみる

自分のサイトのURLでREST APIで情報が取れる状態かアクセスしてみます。

エンドポイントと呼ばれるURLにアクセスしましょう。
ブラウザ(うちはChromeです)でURL欄に以下を入力します。

WordPressのURL/wp-json/wp/v2/posts
https://ナントカカントカ.ドメイン/wp-json/wp/v2/posts

JSON文字列で、いくつかデータが返ってきているはずです。
これで情報は取得できそうだとわかります。

宣伝@ご依頼ご相談はお気軽に。

個人・法人問わずこの手の自動化手法や業務改善を商っています。
ご相談無料!

合同会社ムジンケイカクプロ (mkp_troubleshooting) 【ランサーズ】

ムジンケイカクプロさん(サイト構築と改善+業務効率化支援専門)のプロフィール | ココナラ

投稿テストのプログラム

ともかくテストしてみましょう。
というか、ここまできていて、この先にハマる人が多いハズ。
ここからどうすれば???です。

Pythonで書いてあるので、ご自身のサイトで試してみてください。
不具合関連の苦情は受け付けていません。

免責

お使いのPCや環境、その他あらゆる不具合に対して責任を持てません。
特にプログラム本体のご利用は、バックアップなどをしっかり行い、ローカルの開発環境などでテストしてお使いください。

手元にある実際のテストプログラム(Python)

import requests
import urllib

import numpy as np
import pandas as pd
pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)

import csv
import sys
sys.path.append('data/')
import os, time
from datetime import datetime
import json
import requests

素人プログラムでよろしければ参考程度に

以下有料
ステータスコードで201が返って表示される=正常となります。

class PostTest():
    
    def __init__(self):
        self.status = ''
        self.slug = ''
        self.content = ''
        self.title = ''
        
    # WordPress新規投稿関数
    def post_test(self): #category_ids, tag_ids, media_id):

       payload = {'status': self.status,
                  'slug': self.slug,
                  'title': self.title,
                  'content': self.content,
                  #'categories': [1],
                  #'tags': [1],
                 }       

       res = requests.post(urllib.parse.urljoin(self.WP_URL,"wp-json/wp/v2/posts"), 
                           json=payload,
                           auth=(self.WP_USERNAME, self.WP_PASSWORD))
       print(res.status_code)
       #return res

ドメイン、ID、アプリケーションパスワードは、前の記事を確認してください。

PT = PostTest()

# WordPressへアクセスする
PT.WP_URL= 'http://ドメイン/'
PT.WP_USERNAME = 'あなたのID'
PT.WP_PASSWORD = r'あなたのアプリケーションパス'

#記事内容と公開の状態
PT.status = 'publish'
PT.content = 'テストの記事内容'
PT.slug = 'dummy-url'
PT.title = '動作確認の投稿テスト'

# 記事投稿
PT.post_test()

いつもお読みいただき、ありがとうございます。 書くだけでなく読みたいので、コメント欄で記事名入れてもらうと見に行きます。