Python

【Python×ワードプレス】記事タイトルからIDを取得する(WordPress REST APIを叩く)

記事内に商品プロモーションを含む場合があります

こんにちは、hokkyokunです。

前回、ワードプレスの記事操作を自動化するための
WordPress REST APIの準備を行いました。

こちらに記事があります。

今回は
記事タイトルからIDを取得してみます。

私はブログをConoHa WING(コノハウィング)のレンタルサーバーを
使って運営しています。

その中で投資運用記録
毎月一回新規投稿および最新情報へ更新するよう
自動化しています。

処理としては以下のようなことをやっています。

  1. マネーフォワードのデータスクレイピング
  2. 仮想通貨取引所bitFlyerのAPI経由で口座データ取得
  3. データ分析と保存
  4. インタラクティブなグラフ作成
    ※操作に応じて情報を表示する、直感的なデータ可視化のグラフ。
  5. htmlを最新の情報に更新し、テキスト化して保存
  6. WordPress REST API経由でブログ記事の更新
    ①タイトルから記事ID取得→なければ新規投稿
    ②記事IDから記事情報を取得
    ③データを更新し、記事投稿

上記内容はすべてPythonだけで行っています。

業界最安値なのでConoHa WING(コノハウィング)を使っているのですが、
問題なく動きました。

タイトルが完全一致する記事のIDを取得する

タイトルが部分一致ではなく、
完全に一致する記事のIDだけ取得します。

可能性は余りないですが、
一応全く同じタイトルで記事が複数ある場合は
最新の記事がヒットするようになります。

import requests
# SITE_NAME:ブログのurl(https://www.hokkyokun.com/)
# title:記事のタイトル
# この関数はtitleが完全に一致する記事のIDを返します。
def get_wp_id(title):
    url=SITE_NAME + "/wp-json/wp/v2/posts"
    page=1
    while True:
        params={"page":page}
        res=requests.get(url,params=params)
        json=res.json()
        if res.json()!=[] and res.status_code==200:
            for elm in json:
                if title==elm["title"]["rendered"]:
                    return elm["id"]
            page+=1
        else:
            return None

私のサイトで以下の関数を動かすをこのような結果が返ってきます。

print(get_wp_id("2023年3月資産評価"))
>> 10360

タイトルが部分一致する記事のIDを複数取得する

タイトルの一部でヒットさせ、
辞書形式{”記事タイトル”:ID}で返す関数を作りました。

記事タイトルを一言一句指定しなくても良いので
使い分けするといいかもしれません。

import requests
# SITE_NAME:ブログのurl(https://www.hokkyokun.com/)
# search:記事のタイトルからsearchで指定した文字列を探します
# searchの文字列が部分一致した記事のタイトルとIDを辞書形式で返します。
def get_wp_id_partmatch(search):
    url=SITE_NAME + "/wp-json/wp/v2/posts"
    dicts={}
    page=1
    while True:
        params={"page":page}
        res=requests.get(url,params=params)
        json=res.json()
        if res.json()!=[] and res.status_code==200:
            for elm in json:
                if search in elm["title"]["rendered"]:
                    dicts[elm["title"]["rendered"]]=elm["id"]
            page+=1
        else:
            break
    return dicts

当サイトを「投資」で抽出してみます。

from pprint import pprint
pprint(get_wp_id_partmatch("投資"))

ブログの自動化

ワードプレスを操作して常に最新の情報にアップデート

当サイトで紹介しているいくつかのプログラムをつなげて

  1. サイトに記事が投稿されているかどうか判断
  2. 投稿されていれば、記事の更新
    されていなければ、新規投稿

のようなブログ記事の半自動化も可能となります。

例えば天気、株価、仮想通貨価格、道路状況、遊園地の混雑具合など
最新の情報を定期的に記事に差し込むことで、記事の価値をアップさせることもできます。

ご紹介しているプログラムで可能ですので、
ぜひ活用してみてください。

Pythonを使ったワードプレスの自動化の方法をまとめています。

使用しているブログ環境

私はブログ運営のためにConoHa WING(コノハウィング)を使用しています。。

私の場合、記事投稿、記事更新、メディアID、記事IDの取得はできています。
記事の最新状態へのアップデートは問題なく、自動化できています。

他社と比較して費用が圧倒的に安くつく点を優先してこのサーバーを借りています。