Skip to content

有料記事 codoc ペイウォール シナリオ・受け入れ手順 ​

有料記事(月刊まっく)の 自サイト HTML + codoc ペイウォール を手動で確認するための手順です。

対象範囲 ​

  • 基本情報の販売価格 meta(paid_article_codoc_price)の保存・表示
  • 訪問者経路: intro + 安定境界(data-id="codoc-tag")のみ。有料セクション HTML はレスポンスに載せない
  • 購入後の解錠表示(codoc プラグイン側)
  • 販売未開始(レガシーで meta が空)時の境界なし表示
  • 編集者の通常閲覧/一般訪問者プレビュー
  • 公開前の運用チェック(価格設定 → 保存同期 → 公開 → 実機)

非対象 ​

  • 旧 note リード CTA / NOTE_URL 販売導線
  • 日別記事末尾の投げゼニ(CodocSupportWidgetService)
  • db_paid_article_purchase と codoc 購入の自動同期
  • サイト内 Stripe Checkout(削除済み)

テスト対象の設計書 ​

前提 ​

  • Local または Staging で実施する。本番課金・本番ユーザーでは実施しない(購入シナリオはテスト用アカウント/テスト決済がある場合のみ)。
  • codoc プラグインが有効であること(未導入時はフェイルクローズで intro のみ/マーカー表示。S1 のペイウォール UI 確認にはプラグインが必要)。
  • テスト用の公開済み paid_article 投稿があること(intro と有料セクションの両方が入っている号)。
  • 基本情報の販売価格は非負整数。空欄保存時は既定値 1000 が保存される(meta 削除ではない)。

事前準備 ​

1. 対象記事を決める ​

  • 編集画面 URL と公開 URL を控える
  • intro に識別しやすい文言、有料セクションにページソースで探せる識別文字列(機種名・表の見出しなど)があること

2. ブラウザ ​

  • 未購入確認: シークレットウィンドウ(ログアウト)
  • 編集者確認: 編集権限のあるアカウント
  • 購入後確認: codoc 側で購入済み(またはテスト購入可能な)セッション

3. 販売価格の確認 ​

管理画面 → 有料記事 → 基本情報の「販売価格(円)」が整数で入っていること。未設定のレガシー号を開くと編集画面オープン時に既定値 1000 が永続化される点に注意(S3 は意図的に空 meta を用意する)。

手動シナリオ ​

S1. 未購入(訪問者)— intro + ペイウォール境界 ​

  1. シークレットウィンドウで対象記事の公開 URL を開く。
  2. intro(無料部分)が表示されることを確認する。
  3. ページ内に [data-id="codoc-tag"].codoc-entries 相当の境界があること、codoc の購入 UI(ペイウォール)が出ることを確認する。
  4. 有料セクションの識別文字列が 画面上にもページソース(表示 HTML)にも含まれないことを確認する。
  5. 境界 HTML に data-price や wp:codoc/codoc-block が含まれないことを確認する(価格は訪問者レスポンスに出さない)。

S2. 購入後 — 有料セクションの解錠 ​

  1. codoc 側で対象号を購入する(または購入済みアカウントでログインした状態にする)。
  2. 同じ公開 URL を再読込する。
  3. intro に加え、有料セクション(レスポンシブ HTML・表・グラフ等)が表示されることを確認する。
  4. スマホ幅でも本文が読めることを確認する。

PHPUnit / 現行 e2e では codoc 解錠を模擬しない。S2 は手動必須。

S3. 販売未開始(レガシー空 meta)— 境界なし ​

通常運用では空欄保存で 1000 が入るため、未開始は meta が空のまま残っているレガシー号向け。

  1. 公開済みのテスト専用号で paid_article_codoc_price を空にする(WP-CLI 例: wp post meta delete <post_id> paid_article_codoc_price)。下書き/非公開だとゲストが URL を開けないため使わない。編集画面を開くと既定値が保存されるため、空のまま確認するなら 編集画面を開かずに フロントを見る。
  2. ログアウト(シークレット)でその号の 公開 URL を開く。
  3. ペイウォール境界(data-id="codoc-tag")が 挿入されないこと、visible セクションが境界なしで並ぶことを確認する。
  4. 確認後は meta を整数価格に戻し、公開運用号を誤って空のままにしない。

S4. 編集者 — 通常全文/訪問者プレビュー ​

  1. 編集権限ユーザーで公開 URL を開く(visitor preview なし)。
  2. 境界なしで全文(intro+有料セクション)が見えることを確認する。
  3. 基本情報の「一般訪問者プレビュー」リンク(?paid_article_preview=visitor)を開く。
  4. 価格ありのとき、S1 と同様に intro + codoc-tag 境界経路になることを確認する。

運用チェックリスト(公開前) ​

号を公開する直前、または価格変更後に実施する。

#確認項目結果
1基本情報で販売価格(円・非負整数)を設定し更新した[ ]
2保存後、同期用 post_content に Gutenberg 互換ブロックが載っている(任意で DB/編集画面で確認)[ ]
3ステータスを公開にした[ ]
4シークレットで公開 URL を開き、S1(intro+ペイウォール)を満たす[ ]
5スマホ実機(または DevTools のモバイル幅)でペイウォール UI と intro を確認した[ ]
6(初号など)必要ならテスト購入で S2 の解錠を確認した[ ]

受け入れ条件と自動テスト対応 ​

受け入れ条件確認方法
販売価格の非負整数・空欄は既定値 1000・不正は既存値保持PHPUnit(下表)
未購入で intro のみ・有料 HTML 非出力・安定境界S1 手動 + PHPUnit + e2e
購入後に有料セクションが見えるS2 手動のみ
販売価格未設定(レガシー空)は境界なしS3 手動 + PHPUnit
編集者は境界なし全文/visitor preview は境界経路S4 手動 + PHPUnit
運用: 価格設定→公開→実機ペイウォール運用チェックリスト

PHPUnit 対応表 ​

観点テストクラス / メソッド
価格保存(有効・0・空→1000)PaidArticleBasicInfoMetaBoxTest::test_save_meta_box_updates_codoc_price / ..._allows_zero_codoc_price / ..._writes_default_codoc_price_when_empty
価格不正(小数・負数)..._skips_codoc_update_when_price_invalid / ..._skips_codoc_update_when_price_negative
訪問者境界・有料非出力PaidArticleTemplateServiceTest::test_build_presentation_inserts_codoc_boundary_for_visitor_when_price_set
編集者・空価格・プラグイン無..._skips_boundary_for_editor_without_visitor_preview / ..._skips_boundary_when_price_empty / ..._skips_boundary_when_codoc_shortcode_missing / ..._fail_closed_marker_when_intro_missing_and_codoc_absent
visitor preview..._inserts_boundary_for_editor_visitor_preview
sync ペイロード..._build_codoc_sync_post_content_includes_gutenberg_block_and_sections / ..._build_codoc_sync_post_content_returns_null_when_price_empty / PaidArticleCodocSyncHooksTest
bash
vendor/bin/phpunit \
  tests/Unit/PostType/PaidArticle/Admin/EditScreen/MetaFields/PaidArticleBasicInfoMetaBoxTest.php \
  tests/Unit/Service/PaidArticleTemplateService/PaidArticleTemplateServiceTest.php \
  tests/Unit/PostType/PaidArticle/Hooks/PaidArticleCodocSyncHooksTest.php

E2E ​

未購入でテンプレ到達・intro+codoc 境界の回帰は tests/e2e/paid-article-access.spec.js。購入後解錠は本手順の S2 を正とする。実行は Playwright E2E 実行ガイド を参照。

片付け ​

  • S3 で空にした meta は整数価格に戻す
  • テスト購入データは Staging/codoc 側の方針に従い削除または放置を決める
  • 本番では本手順の購入操作を行わない

参考 ​