楽天セール開催中!ポイント最大11倍! セール会場へ

WordPress|codocブロックの保存価格を1記事ずつカスタムフィールドへ転記する方法

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

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

カスタムフィールドを用いて各記事の価格をまとめたリストの例。

保存したメタ値は独自の一覧表示などに利用できますが、codoc側の現在価格と一致するとは限りません。

対象は、本文へ直接保存されたcodocブロックが1個だけの公開投稿です。同期パターン参照を含む記事や複数ブロックの記事は処理しません。

末尾の11属性は掲載サンプルに含まれるキーです。全バージョンの全パラメータを網羅する一覧ではありません。

正規表現ではなくWordPressのparse_blocks()でブロック属性を読み取ります。

記事のcodocの価格がカスタムフィールドに同期された様子。

price属性が欠ける場合、複数ブロック、同期パターン、複雑な入れ子などはエラーとして既存値を残します。codocを削除した記事の古いメタも自動削除しません。

管理権限と対象投稿の編集権限を持つユーザーが、管理画面から1記事ずつ実行します。定期同期や全投稿一括処理は行いません。

目次

著者

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

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

WordPressでcodocの価格をカスタムフィールドに同期する方法

導入前にファイルとデータベースをバックアップし、検証環境で確認します。既存のpriceメタを他の機能が使っていないか先に調べてください。

0以上8桁以内の整数を扱う例です。この上限はサンプルの制限で、codocの販売条件を示すものではありません。負数・小数・配列・省略された初期値は保存しません。

カスタムフィールドの設置

子テーマのfunctions.phpまたはCode Snippetsの一方だけに追加します。以前の同用途コードは停止し、重複登録しないでください。

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へ保存」を押します。保存時も最新本文から読み直すため、確認時と値が変わる場合があります。同時編集を避け、保存後の値を再確認してください。

管理画面のツールからcodoc価格同期を実行する画面。

以下、コードです。

末尾に、旧サンプルのブロック属性を示します。価格転記コードはそのうち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、一括同期、権限別の保存、ブロックエディターの非同期保存や本番での動作は未検証です。旧画像は当時の表示記録として保持しています。今回のコードを検証した画像ではありません。

架空投稿の右側に表示された価格メタボックスと価格(円)欄。見本値1000で、入力・更新・保存はしていません。
架空投稿の右側に表示された価格メタボックスと価格(円)欄。見本値1000で、入力・更新・保存はしていません。 2026年10月13日Local確認。画像をクリックすると原寸で確認できます。

この記事だけ読みたい方は単品購入、ほかの有料記事も読みたい方は購読プランをご確認ください。

購読対象の記事・料金は、下のプラン案内で確認できます。

役に立った記事を、ブログやSNSで紹介しませんか?

紹介制度の対象記事・購読プランを購入した方は、codocで専用リンクと報酬条件を確認できます。

専用リンク経由で購入されると、設定された紹介報酬が発生します。

購読プランの紹介報酬は初回課金のみが対象です。

codocで紹介リンク・報酬条件を確認する

紹介時は、広告・PRであることが読者に分かるように明記してください。

  • URLをコピーしました!

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

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

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

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

サービス

Service

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

目次