お知らせ内容をここに入力してください。 ボタン

Pochipp│ポチップの商品をREST APIで一括編集する方法

AIとREST APIの組み合わせは非常に便利ですが、編集できないと思っていた部分も実は編集できます。

Pochipp(ポチップ)もその一つです。

たとえばポチップの商品データは、WordPressのカスタム投稿タイプ pochipps の投稿1件として保存されています。

商品の中身(ASIN・価格・画像・リンク)は、その投稿のカスタムフィールド pochipp_data にJSON文字列ひとつとして入っています。

つまり WordPress REST API で読めるし、書けるということです。

管理画面を開かずに、

  • 全商品の価格を一括で入れ直す
  • 間違った商品を指しているリンクをまとめて差し替える
  • 商品を新規登録して、記事にブロックを差し込む

がスクリプトからできます。

数百件から千件規模でも、一晩あれば直せます

ただし、そのままやると引っかかる場所がいくつかあります。

先にそこを共有します。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

なぜREST APIなのか

ポチップの管理画面は、1件ずつ商品を検索して登録する作りです。

10件なら手で足ります。

たとえば1つの対象につき商品を2件、3件と並べるサイトなら、扱う対象の数がそのまま商品数になります。

数百件を超えたあたりから、管理画面での作業は現実的でなくなります。

さらに厄介なのが、登録済みの商品が別の商品を指している場合です。

出したかった商品実際にリンクしていた商品
シリーズ本編の1巻同シリーズの前日譚 1巻
シリーズ本編の1巻同シリーズのスピンオフ 1巻
シリーズ本編の1巻同作のノベライズ版
シリーズ本編の1巻同作の公式イラスト集

これを手作業で直す気にはなれません。

該当するものを特定して、正しい商品コードを引き直して、データを差し替える。

全部スクリプトの仕事です。

ポチップの商品データはどこにあるか

構造はとてもシンプルです。

カスタム投稿タイプ    pochipps  投稿タイトル        商品名(管理画面の一覧に出る名前)  カスタムフィールド   pochipp_data  ← JSON文字列。中身が全部ここ

REST APIのエンドポイントは /wp-json/wp/v2/pochipps です。

普通の投稿と同じ扱いで、一覧も個別取得も更新も作成もできます。

pochipp_data を取り出すと、こういう形のJSONが入っています。

{  "asin": "4000000004",  "amazon_affi_url": "https://www.amazon.co.jp/dp/4000000004?tag=...",  "image_url": "https://m.media-amazon.com/images/I/....jpg",  "price": "759",  "price_at": "2026/09/08 15:38",  "info": "著者名",  "showPrice": true,  "hidePrice": false,  ...}

見た目より素直です。

このJSONを書き換えて戻せば、記事の表示がそのまま変わります。

記事側はどうなっているか

記事本文には、商品そのものではなくIDへの参照が入っています。

<!-- wp:pochipp/linkbox {"pid":8107,"isCount":true,"cvKey":"a1b2c3d4"} /-->

pid が商品投稿のIDです。

商品側を直せば、その商品を貼っている全記事の表示が一斉に変わります。

逆に言えば、記事を作り直さなくても商品だけ更新すれば済むということです。

価格を毎週入れ直すような運用ではここが効きます。

先に言っておく、つまずきどころ

実際につまずいた順に並べます。

詳しい対処と動くコードは後半にまとめました。

1. pochipp_data が取れない

普通に /wp-json/wp/v2/pochipps を叩いても、meta が空だったり、そもそも出てこなかったりします。

取り方にひとつ条件があります。

2. 部分更新はできない

pochipp_data はJSON文字列まるごとひとつのフィールドです。

「価格だけ更新」というつもりで価格だけ入れたJSONを送ると、それ以外の項目が全部消えます

ASINも画像もリンクも消えて、商品が空になります。

「読む → 書き換える → 戻す」の順で扱います。

3. 価格を入れても表示されない

price に数字を入れただけでは、記事に価格は出ません。

表示を左右するフラグが別にあります。

しかもそのフラグ、名前から想像する挙動と少しずれています。

4. 楽天のリンクを入れても検索結果に飛ぶ

商品ページへの直リンクを入れたいのに、楽天ボタンが「楽天市場で”◯◯ 1巻”を検索した結果」に飛び続ける。

これはフィールド名の問題です。

候補を6つ試して、効くものは1つだけでした。

名前から予想できるものではありません。

なお、そこに入れるURLはアフィリエイトIDが付いていない生の商品URLです。

アフィリエイトIDはポチップが自分で付け直します。

付いたURLを渡すと二重になって壊れます。

5. 価格が「¥1」になる

Amazon APIから素直に価格を取ると、たまに1円になります。

中古の出品が「買い物かごに入る側」を取っているためです。

コミックスの1巻が¥1で表示されている、といった具合です。

これはポチップの問題ではありませんが、一括更新をやるなら踏むことになります。

6. 消してはいけないもの

cvKey と isCount はクリック計測に使われています。

ここを空にしたり作り直したりすると、それまでの計測が切れます。

更新のときは触らないのが正解です。

作業前に

必ずバックアップを取ってください。 カスタムフィールドを直接書き換える作業です。

ループを1回間違えれば全商品が壊れます。

絞り込むつもりのスクリプトを条件なしで走らせて、34件を上書きしたことがあります。

ログから戻せましたが、残していなければ手詰まりでした。

  • 実行前にデータベースのバックアップを取る
  • いきなり全件ではなく、1件で試して表示を確認してから回す
  • 更新の前後をログに残す(戻せるように)

この3つは省かないでください。

ここから先(有料部分)

以下、実際に動くコードです。

Python + requests で書いていますが、やっていることは単純なHTTPリクエストなので、PHPでもJavaScriptでも同じことができます。

  • 接続(アプリケーションパスワードでの認証)
  • 全商品を読み出す
  • 1件だけ安全に更新する
  • 一括更新の骨組み(失敗しても止まらない・進捗が見える)
  • 商品を新規登録して記事にブロックを差し込む
  • pochipp_data のフィールド一覧(分かっているもの全部)
  • つまずきどころ1〜6の具体的な対処
  • URLをコピーしました!

プラグインの設定でお困りなら

プラグインの導入・カスタマイズ代行

プラグインの選定から設定、競合の解消、動作に合わせた追加実装まで承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次