Python

【Python×ワードプレス】画像タイトルからメディアIDを取得する関数。アイキャッチ付き自動投稿も(WordPress REST APIを叩く)

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

こんにちは、hokkyokunです。
WordPress REST APIを叩いて、画像タイトルからメディアIDを取得します。

Web APIを叩くには通常、準備が必要です。
まだの方はこちらを見てください(簡単です)

が、データを確認するだけなら
準備は不要です。

記事投稿は準備が必要なので、
まだの方はぜひ準備をしてみてください。

今回は
画像タイトルから画像ID(=メディアID)を取得してみます。

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

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

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

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

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

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

メディアIDの使いどころ

メディアIDはそもそも普通にワードプレスを使っている分には
意識することはないと思います。

メディアIDを取得することで、
記事の自動投稿をアイキャッチ画像付きで操作することができます

下記の投稿はPythonから自動投稿した分ですが、
予め登録しておいた画像をアイキャッチとして使用しています。

アイキャッチを指定するためには
メディアIDを取得する必要があるのですが、
普通にダッシュボードからは確認できません。多分…ですが(笑)

まあ、仮にダッシュボードから取得できたとしても
いちいち見に行くのは面倒なので、
記事のタイトルから取得しちゃいましょう。

メディアIDを取得する関数

# SITE_NAME:ブログのurl(https://www.hokkyokun.com/)
# title:画像のファイル名(拡張子なし)を指定します。
# 同じファイル名の場合○○-1と数字が後ろにつくので注意。
def get_wp_media_id_match(title):
    url=SITE_NAME + "/wp-json/wp/v2/media"
    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 elm["title"]["rendered"]==title:
                    return elm["id"]
            page+=1
        else:
            return None

使用方法

引数は一つで 「title」 です。

すでにアップロードされている画像から
titleで指定した画像の名称と完全一致する画像のIDを取得します。

戻り値はID番号です。
ヒットしなければ「None」が返ってきます。

画像の名称はアップロードした際のファイル名です。
下記の赤で囲った枠の名称です。

メディアIDを調べたい画像の名称を調べておき、
引数に指定してください。

  • このとき、すでに登録している名称とかぶっている場合は
    ○○-1のように数字がつくので注してください。
  • できれば名前がかぶらないように管理をしてください。

実際に使用してみる

実際に使用してみます。

上記の画像のIDを調べてみます。
画像のタイトルは「testsample」です。

print(get_wp_media_id_match("testsample"))
>> 10381

画像IDを使ってアイキャッチ付きで自動投稿してみる

アイキャッチ付きで投稿してみます。

status="future"
future_datetime=datetime.datetime(2023,4,5)
slug="test"
title="test_title"
content="<p>test<br>test<br>test<br>test<br>test<br>test<br>test</p>"
category_ids=[28] #「Python」のカテゴリーID
tag_ids=[33] #「sample」のタグID

#################################################
#アイキャッチIDを取得する
featured_media_id=get_wp_media_id_match("testsample")
#################################################
res=article_post(status=status,future_datetime=future_datetime,slug=slug,title=title,content=content,category_ids=category_ids,tag_ids=tag_ids,featured_media_id=featured_media_id)

下記のような投稿を自動で行えます。

自動投稿に関しては詳しくはこちらをご確認ください

【Python×ワードプレス】WordPress REST APIを叩いて記事を自動投稿する。コピペOK わかること Wordpress REST APIをPythonを使って記事の自動投稿を行います。 タグ、カテゴリー、アイキャッ...

ブログの自動化

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

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

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

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

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

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

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

使用しているブログ環境

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

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

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