OHTA412

Accept Stripe Paymentsで動的に値段を設定して商品を登録する方法

Stripe決済の決済画面をWordPress上で簡単に作成できるプラグインにAccept Stripe Paymentsがあります。管理画面から「Stripe Payments」→「Peroducts」と進み商品登録をすると、その商品の決済画面を簡単に作ることができます。

しかし、ユーザーの選択によって値段が動的に変わる場合は、管理画面からの手動登録では対応できません。その場合は、functions.phpで商品登録を自動で行う必要があります。

商品登録

// 商品登録
$args = [
    'post_title' => 'タイトルです', // タイトル
    'post_content' => '説明文です', // 説明
    'post_status' => 'publish',
    'post_type' => 'asp-products',
];
$post_id = wp_insert_post($args);

// メタデータ登録
if( $post_id ){
    add_post_meta($post_id, 'asp_product_description', 'テキスト'); // 簡単な説明
    add_post_meta($post_id, 'asp_product_type', 'one_time'); // 価格タイプ
    add_post_meta($post_id, 'asp_product_price', 1200); // 価格
}

2~8行目で商品登録をしています。タイトルと説明文を動的に変更したい場合は、ここで設定します。

8行目のwp_insert_post()で商品登録し、成功すれば商品ID(記事ID)が返却されます。失敗すれば「0」が返却されます。

商品登録が成功した場合、11行目以降でメタデータ登録を行っています。add_post_meta()は、記事にメタデータを登録できる関数です。第1引数に記事IDを指定するので、8行目で返却された記事IDを使います。第2引数にメタキーを指定して、第3引数に値を設定します。

「簡単な説明」欄を動的に変更したい場合は、12行目で設定します。13行目では、価格タイプを設定しています。「One-time payment」の場合は「one_time」、「Donation」の場合は「donation」と記載します。14行目で価格を設定します。

決済画面URL

商品の決済画面URLは下記のようになります。このURLにアクセスすれば、決済画面が表示されます。

https://ohta412.jp/asp-payment-box/?product_id=309

ドメインの後ろに「asp-payment-box/」、パラメータに「?product_id=309」を付けます。最後の数字は商品IDです。動的に表示させる場合は、下記のようになります。

esc_url(home_url('asp-payment-box/?product_id=' . $post_id));

この場合の$post_idは商品登録のときに返却されたIDです。