この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレスでショッピングカートを作ろう その8 カートに入れた商品を変更する・削除する

前回はセッションを使いカートに商品を追加しました。
ここでちょっとお詫びと訂正があります。

セッションハイジャック用にセッションIDを書き換える「session_regenerate_id()」という関数を紹介しましたが、これがサーバーの設定に依存するのか、うまく行かないことがあることが分かりました。
「session_regenerate_id()」でIDを書き換えるとかなり確率でセッションが切れてしまう可能性があります。
ワードプレスを汎用的に使うことを考えるとサーバーに依存するセッションIDの書き換えは使えないので、今回は使わない方向で話を進めます。

ただし、セッションIDの書き換えを行わなくてもユーザー情報はワードプレスの管理に任せているので、乗っ取られても被害は軽微です。個人情報の漏洩はありません。
日本語環境で動く有名なショッピングカートプラグイン「Welcart」のソースを見ても「session_regenerate_id()」は使っていないようなのでワードプレスでは「session_regenerate_id()」は鬼門なのかなと。

「session_regenerate_id()」は書き換え時にヘッダーリクエストを送信します。ヘッダーが既に出力されていると「headers already sent by」という警告が出てしまいます。
これを回避するためにはワードプレスの「wp-config.php」にセッションの記述をする、という裏技が紹介されていましたが、プラグインやテーマでなんとかできる範疇ではないので諦めました(^^;

ネットで検索すると「session_regenerate_id()」は公式の関数であるにも係わらず問題があると指摘されています。独自のセッション管理機能を実装する方法も紹介されていたので試してみたのですが、ワードプレスとの相性はいまいちでした。

というわけで気を取り直してカートに入れた商品を変更して削除する方法です。
カートに入れた商品を変更して削除するにはショッピングカートのデザインに変更と削除ボタンを追加します。
更新はフォームから送信されたデータをセッション変数の新しい値として書き換えあげればいいわけです。

ではまずはショッピングカートのフォームに変更と削除ボタンを追加してみます。
前回作成した「functions.php」を以下のように改作します。

関連記事