WooCommerce
Eコマースプラットフォーム
WooCommerce
概要
WooCommerceはWordPressベースのオープンソースEコマースプラグインです。既存のWordPressサイトに簡単にEコマース機能を追加でき、高いカスタマイズ性を提供します。WordPressの普及により継続的に成長し、オープンソースの利点とWordPressエコシステムとの統合により、コスト重視の中小企業で人気を博しています。
詳細
WooCommerceは2011年にリリースされ、現在では世界中の500万以上のオンラインストアで使用されています。WordPress上で動作するため、WordPressのメリット(SEO、コンテンツ管理、豊富なテーマ・プラグイン)をそのまま活用できます。完全オープンソースで基本機能は無料で利用でき、必要に応じて有料拡張機能を追加できます。
主な特徴
- WordPress統合: 既存のWordPressサイトへの簡単統合
- オープンソース: 完全無料で商用利用可能
- 高いカスタマイズ性: テーマ・プラグインで自由にカスタマイズ
- SEOフレンドリー: WordPress標準のSEO機能を継承
- 多様な決済オプション: 100以上の決済ゲートウェイ対応
- 多言語・多通貨対応: グローバルビジネスに対応
- 豊富な拡張機能: 数千のプラグインで機能拡張
- 開発者フレンドリー: フック・フィルターによる柔軟な開発
対応決済方法
- PayPal、Stripe、Square
- クレジットカード決済
- 銀行振込、代金引換
- Apple Pay、Google Pay
- 後払い決済(Klarna、Afterpay等)
- 仮想通貨決済
メリット・デメリット
メリット
- 無料利用: 基本機能は完全無料
- 自由度の高いカスタマイズ: コードレベルでの変更可能
- 豊富なリソース: 大量のテーマ・プラグイン・チュートリアル
- コミュニティサポート: 活発な開発者コミュニティ
- SEO最適化: WordPress標準のSEO機能
- 所有権: 自サーバーでの完全な管理権
- データ制御: データエクスポート・移行の自由度
デメリット
- 技術的知識必要: セットアップ・メンテナンスに技術スキル必要
- サーバー管理: ホスティング・セキュリティ・バックアップの責任
- パフォーマンス: サーバー性能とプラグインの影響
- セキュリティ: 定期的なアップデート・対策が必要
- サポート: 公式サポートは有料拡張のみ
- 複雑性: プラグイン間の競合やバージョン管理
参考ページ
実装例
1. 基本セットアップ
<?php
// WooCommerceの基本設定
add_action('after_setup_theme', 'woocommerce_support');
function woocommerce_support() {
add_theme_support('woocommerce');
add_theme_support('wc-product-gallery-zoom');
add_theme_support('wc-product-gallery-lightbox');
add_theme_support('wc-product-gallery-slider');
}
// 通貨・地域設定
add_filter('woocommerce_currency', 'change_woocommerce_currency');
function change_woocommerce_currency() {
return 'JPY'; // 日本円
}
// 税設定
add_filter('woocommerce_calc_tax', '__return_true');
2. 商品カタログ管理
<?php
// プログラマティックな商品作成
function create_woocommerce_product() {
$product = new WC_Product_Simple();
// 基本情報
$product->set_name('新商品');
$product->set_slug('new-product');
$product->set_regular_price('2999');
$product->set_sale_price('2499');
$product->set_sku('PROD-001');
// 説明
$product->set_short_description('商品の短い説明');
$product->set_description('商品の詳細説明');
// 在庫管理
$product->set_manage_stock(true);
$product->set_stock_quantity(100);
$product->set_stock_status('instock');
// カテゴリ・タグ
$product->set_category_ids([1, 2]);
$product->set_tag_ids([1, 2, 3]);
// 保存
$product_id = $product->save();
return $product_id;
}
// カスタム商品フィールド
add_action('woocommerce_product_options_general_product_data', 'add_custom_product_fields');
function add_custom_product_fields() {
woocommerce_wp_text_input([
'id' => '_custom_field',
'label' => 'カスタムフィールド',
'description' => '追加情報を入力',
'type' => 'text'
]);
}
3. 決済統合
<?php
// カスタム決済ゲートウェイ
class WC_Custom_Payment_Gateway extends WC_Payment_Gateway {
public function __construct() {
$this->id = 'custom_payment';
$this->has_fields = true;
$this->method_title = 'カスタム決済';
$this->method_description = 'カスタム決済ゲートウェイ';
$this->init_form_fields();
$this->init_settings();
$this->title = $this->get_option('title');
$this->description = $this->get_option('description');
add_action('woocommerce_update_options_payment_gateways_' . $this->id,
array($this, 'process_admin_options'));
}
public function process_payment($order_id) {
$order = wc_get_order($order_id);
// 決済処理ロジック
$payment_result = $this->process_payment_api($order);
if ($payment_result['success']) {
$order->payment_complete();
return array(
'result' => 'success',
'redirect' => $this->get_return_url($order)
);
} else {
wc_add_notice($payment_result['message'], 'error');
return array('result' => 'fail');
}
}
}
// Stripe決済の統合例
add_action('wp_enqueue_scripts', 'enqueue_stripe_scripts');
function enqueue_stripe_scripts() {
if (is_checkout()) {
wp_enqueue_script('stripe-js', 'https://js.stripe.com/v3/');
wp_enqueue_script('custom-stripe', get_template_directory_uri() . '/js/stripe-checkout.js');
}
}
4. 注文管理
<?php
// 注文作成のカスタマイズ
add_action('woocommerce_checkout_create_order', 'custom_checkout_create_order', 10, 2);
function custom_checkout_create_order($order, $data) {
// カスタムフィールドを注文に追加
$order->update_meta_data('_custom_order_field', 'カスタム値');
}
// 注文ステータス変更時の処理
add_action('woocommerce_order_status_completed', 'send_custom_email');
function send_custom_email($order_id) {
$order = wc_get_order($order_id);
// カスタムメール送信
$to = $order->get_billing_email();
$subject = '注文完了のお知らせ';
$message = 'ご注文ありがとうございました。';
wp_mail($to, $subject, $message);
}
// 注文データのカスタムエクスポート
function export_orders_csv() {
$orders = wc_get_orders(array(
'limit' => -1,
'status' => 'completed'
));
$csv_data = array();
$csv_data[] = array('注文ID', '顧客名', '合計金額', '注文日');
foreach ($orders as $order) {
$csv_data[] = array(
$order->get_id(),
$order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
$order->get_total(),
$order->get_date_created()->date('Y-m-d')
);
}
return $csv_data;
}
5. テーマカスタマイズ
<?php
// テンプレートのオーバーライド
add_action('woocommerce_single_product_summary', 'custom_product_content', 25);
function custom_product_content() {
global $product;
echo '<div class="custom-product-info">';
echo '<p>特別価格: ' . wc_price($product->get_price()) . '</p>';
echo '</div>';
}
// ショップページのカスタマイズ
add_action('woocommerce_before_shop_loop', 'custom_shop_header');
function custom_shop_header() {
echo '<div class="custom-shop-header">';
echo '<h2>おすすめ商品</h2>';
echo '<p>厳選した商品をお楽しみください。</p>';
echo '</div>';
}
// カスタムカートボタン
add_filter('woocommerce_product_add_to_cart_text', 'custom_add_to_cart_text');
function custom_add_to_cart_text() {
return 'カートに入れる';
}
6. 分析・SEO最適化
<?php
// Google Analytics Eコマーストラッキング
add_action('woocommerce_thankyou', 'add_google_analytics_purchase_tracking');
function add_google_analytics_purchase_tracking($order_id) {
$order = wc_get_order($order_id);
if (!$order) return;
echo '<script>';
echo 'gtag("event", "purchase", {';
echo '"transaction_id": "' . $order->get_id() . '",';
echo '"value": ' . $order->get_total() . ',';
echo '"currency": "' . $order->get_currency() . '",';
echo '"items": [';
foreach ($order->get_items() as $item) {
$product = $item->get_product();
echo '{';
echo '"item_id": "' . $product->get_sku() . '",';
echo '"item_name": "' . $item->get_name() . '",';
echo '"quantity": ' . $item->get_quantity() . ',';
echo '"price": ' . $item->get_total() . '';
echo '},';
}
echo ']});';
echo '</script>';
}
// 構造化データの追加
add_action('wp_head', 'add_product_schema');
function add_product_schema() {
if (is_product()) {
global $product;
$schema = array(
'@context' => 'https://schema.org/',
'@type' => 'Product',
'name' => $product->get_name(),
'description' => wp_strip_all_tags($product->get_description()),
'image' => wp_get_attachment_url($product->get_image_id()),
'offers' => array(
'@type' => 'Offer',
'price' => $product->get_price(),
'priceCurrency' => get_woocommerce_currency(),
'availability' => 'https://schema.org/InStock'
)
);
echo '<script type="application/ld+json">';
echo json_encode($schema);
echo '</script>';
}
}