この記事では、投稿本文に保存されたcodocブロックのprice属性を、独自の投稿メタpriceへ転記する例を紹介します。

codocのAPIを呼ぶ処理や、サービス側の販売価格を変更する処理ではありません。


保存したメタ値は独自の一覧表示などに利用できますが、codoc側の現在価格と一致するとは限りません。
対象は、本文へ直接保存されたcodocブロックが1個だけの公開投稿です。同期パターン参照を含む記事や複数ブロックの記事は処理しません。
正規表現ではなくWordPressのparse_blocks()でブロック属性を読み取ります。

price属性が欠ける場合、複数ブロック、同期パターン、複雑な入れ子などはエラーとして既存値を残します。codocを削除した記事の古いメタも自動削除しません。
WordPressでcodocの価格をカスタムフィールドに同期する方法
導入前にファイルとデータベースをバックアップし、検証環境で確認します。既存のpriceメタを他の機能が使っていないか先に調べてください。
0以上8桁以内の整数を扱う例です。この上限はサンプルの制限で、codocの販売条件を示すものではありません。負数・小数・配列・省略された初期値は保存しません。
カスタムフィールドの設置
子テーマのfunctions.phpまたはCode Snippetsの一方だけに追加します。以前の同用途コードは停止し、重複登録しないでください。
// 保存済みpriceを表示するだけ。投稿更新では変更しない。
add_action('add_meta_boxes_post', function () {
add_meta_box('waza_codoc_price', 'codoc価格の保存値', function ($post) {
if (!current_user_can('edit_post', $post->ID)) return;
$values = get_post_meta($post->ID, 'price', false);
if (count($values) > 1 || (isset($values[0]) && !is_scalar($values[0]))) {
echo '<p>複数行または複合値のため表示対象外です。</p>';
return;
}
echo '<p>price: ' . esc_html(isset($values[0]) ? (string) $values[0] : '未保存') . '</p>';
echo '<p>codocの現在の販売価格を照合した値ではありません。</p>';
}, 'post', 'side', 'default');
});
最初のコードは保存済みpriceの読み取り専用メタボックスです。投稿の更新では価格を変更しません。複数行や複合値のメタは表示対象外にします。
2026年10月21日に掲載コードを見直しました。以前の全投稿一括処理を1記事単位の確認・保存へ変更しています。保存済み本文とメタの読み書きの間をロックする仕組みや自動ロールバックはありません。PHP構文と、ローカルのWordPressブロックパーサーを使う抽出試験、保存先を模したテストで確認のみ・保存・不正対象拒否を確認しました。実際のWordPress管理画面での保存、権限別操作、codoc側との価格一致は未検証です。本番導入前に検証用投稿で確認してください。停止時は追加したコードを外します。既に保存したpriceは残るため、元の値へ戻す場合はバックアップと照合します。
codocの価格をカスタムフィールドpriceに同期するコード
次のコードが転記用の管理画面です。1記事の本文を最大1,000,000バイト、入れ子を20階層までとして扱います。
管理画面の「ツール」→「codoc価格転記」を開きます。
公開投稿IDを入力し、まず「確認のみ」で対象タイトル・既存値・抽出値を照合します。保存する場合は同じIDを再入力し「この1記事のpriceへ保存」を押します。保存時も最新本文から読み直すため、確認時と値が変わる場合があります。同時編集を避け、保存後の値を再確認してください。

以下、コードです。
旧コードの価格メタボックス表示例(2026年10月13日)
2026年10月13日に、新規Local環境(WordPress 7.1.3、PHP 8.1.23、Twenty Twenty-Five 1.5)へ、当時掲載していた編集可能なメタボックス設置用PHPだけを追加して撮影した記録です。今回の読み取り専用版の画像ではありません。写真は架空投稿と撮影前に用意した見本価格1000の表示です。本番の価格やcodocの設定は変更していません。
投稿の編集画面では右側に「価格」メタボックスと「価格(円)」の入力欄が表示されました。今回は表示と撮影のみで、入力・更新・保存は行っていません。写真は価格の保存、codocからの同期、販売価格との一致を確認した記録ではありません。
codocの全パラメータを取得するスクリプトはLocalへ追加・実行していません。外部API、一括同期、権限別の保存、ブロックエディターの非同期保存や本番での動作は未検証です。旧画像は当時の表示記録として保持しています。今回のコードを検証した画像ではありません。

この記事だけ読みたい方は単品購入、ほかの有料記事も読みたい方は購読プランをご確認ください。
購読対象の記事・料金は、下のプラン案内で確認できます。
役に立った記事を、ブログやSNSで紹介しませんか?
紹介制度の対象記事・購読プランを購入した方は、codocで専用リンクと報酬条件を確認できます。
専用リンク経由で購入されると、設定された紹介報酬が発生します。
購読プランの紹介報酬は初回課金のみが対象です。
紹介時は、広告・PRであることが読者に分かるように明記してください。



