WP e-commerce 備忘録
WordPressにショッピングカートを実装するプラグインに「WP e-commerce」というのがある。しかも、現行のバージョン(3.7.1)では日本語化もされている。ただし、不完全な日本語ではあるが。
それはともかく、他のプラグイン同様にアップロード→有効化して、動作を確認していたら次のようなエラーが。
Warning: unserialize() expects parameter 1 to be string, object given in xxxxxxx/wp-content/plugins/wp-e-commerce/wp-shopping-cart.php on line 288
ファイルを開けてみたら288行目は次のようになっていた。
$GLOBALS['wpsc_cart'] = unserialize($_SESSION['wpsc_cart']);
きっと同じエラーに悩んだ人がいるだろうと思い探した(英語圏も含む)が、見つからず。で、しょうがないので自分なりに解決。どうもシリアル化されていないオブジェクトをアンシリアライズしようとしてエラーに陥るときがあるみたいですね。次のように書き換えました。
if(is_string($_SESSION['wpsc_cart'])){
$GLOBALS['wpsc_cart'] = unserialize($_SESSION['wpsc_cart']);
} else {
$GLOBALS['wpsc_cart'] = $_SESSION['wpsc_cart'];
}
同じエラーに苦しむ人の参考になれば幸いです。