WooCommerce

EコマースWordPressプラグインオープンソースカスタマイズ決済SEO

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>';
    }
}