WooCommerce って何?基本中の基本の話。

WooCommerce って何?基本中の基本の話。

最近、ぱったりとブログを更新しておりませんでしたが、Advent Calendarと言うものがありまして、WooCommerce Advent Calendar 2016も作って頂いたので、でははじめの一歩ということで、私が書くことに致しました。

えっと、まだまだ空きがあるので、WooCommerceを使ったことのある方は是非参加してみてください。否定的な意見でも大歓迎です。皆さんのご意見を聞いてみたいという感じです。

まずは、WooCommerce の基本ですね。WordPress 上で動く EC プラグインです。今、世界で一番使われている EC システムになります。WordPressとほぼ同じく、世界のECサイトの30%がWooCommerce で動いているという状態です。

ですので、基本の基本ですが、WordPressが動かないとWooCommerceは動きません。また、WooCommerceはECの基本部分だけを持っているので、ECとして凝ったこと、例えばポイント機能などは拡張プラグインとしてWooCommerceで使えるプラグインを利用して、機能を増やしていくという形です。これは、WooCommerceの基本のキホンです。

さてさて、今日は私の知る限りの WooCommerce の日本対応の歴史といいますか、そういう話と今の日本や世界での WooCommerce の状況を書かせて頂ければと思います。

そうですね、私が初めて WooCommerce を知ったのが、2012年の冬だったと思います。確か、11月とか12月とか。
その当時は、EC システムの EC cube や Zen Cart、CS cart 等をメインカスタマイズのお仕事などをしておりまして、コンテンツは WordPress か MT でみたいな感じだったんですよね。MTよりも個人的にWordPressのコードのほうが好みだったので、WordPressメインで、ECに関しては、やはりEC cubeの需要が多かったので、EC cubeのカスタマイズをメインに、個人的に好きなCS Cartを色々といじっていたという感じでした。Magentoも日本では出始めてちょろっと触っていた感じです。
そんな時にふと「WordPressでECサイトって出来ないんですか?」と質問されたんです。最初は「いやいや、出来ないでしょう。テーブル構成とか難しいし。。。いや、待てよ、metaがあるし、自由度高いから出来なくもないか。」と考えていて WordPress.org で検索して出てきたので、 WooCommerce だったんです。
実は、私が検索した時は WP-eCommerce と WooCommerce がある程度のダウンロード数を誇っていたので、まずはこの二つのコードなどを見てみました。個人的にhookが明らかに多かったのが WooCommerce だったのと、テーマを基本作っていたっぽい WooThemes という会社の開発だったので、今からの EC はコンテンツやデザイン、ひいては UI や UX がメインになると思っていたので、これは伸びるのではないかと思って、開発者の一人の Mike にメールして、「2.1から国際化対応をしっかりするとRoadmapに書いているから日本語化の部分の手伝いをしていいかな?」と書いたら、「いいよいいよ~」てな感じで Mike Jolley から返事が来まして、「じゃあ、やってみるね」と言って、すこ~しずつ、翻訳を進めるとともに、日本独自の住所の表示順番なども含めてコアとプラグインとの両方で協議しながら、進めていき、ほとんどの部分はプラグインで追加することになり、プラグインが追加しやすいようにhookを準備したり、要素を増やしたりなどを行いました。

んで、WordCampSF 2013に参加したんです。娘連れて、サンフランシスコ行って、娘はバス観光でヨセミテ国立公園などに行かせて、私はWordCampに参加する的な。で、衝撃でしたね。自動セキュリティーパッチのアップデート機能を付けると宣言して、APIを増やしていき、BlogやCMSの観念から開放されたソフトウェアにすると Matt が言っておりまして。んで、お昼ごはんを食べた後にMattが一人で居るのを発見して、いつもの下手くそ英語で話しかけて、ECプラグインなどはどう考えているのか?と聞いたら、「もちろん、中核のシステムとして動いてくれたら良いと思っている」という言葉をもらって、「よっしゃ!WooCommerceの日本対応を今進めているからオイラは頑張るよ!」と伝えて、握手して写真撮ってミーハーに帰ったという。
ちなみにその時に「Naokoって知っているか?日本でWordPressを頑張ってくれているんだよ」と言われたのですが、その当時私はTokyoのコミュニティーには全然顔を出していなかったので、「ん?誰?」と言う感じだったのは、ナ・イ・ショです。

そして、2.1をリリースしたのが2014年2月頃だったと思います。

それから少し遅れること4月頃に WooCommerce for Japan のプラグインを出した感じです。

そして、7月に複数の日本対応の決済プラグインを作成して、 WordPress.org で配布して10月のWordCampTokyo2014 に自腹で WooCommerce のブースを出して、復旧に努めた感じですね。確か、この時 WooCommerce for Japan のダウンロード数は100ぐらいだったかと。

そんで、初のWooConf をサンフランシスコでやるということで、日本翻訳者として参加せねばと、頑張って参加したんですね。まあ、小・中学校の同級生に会いに行きたかったというのもあったりするんですけどね。

ここまでは、ほぼ自腹。1円も儲けられなかったんすよね。マジで。

この時期までは WordPress のテーマやカスタマイズの仕事をしたり、EC cube や CS-Cart のカスタマイズの仕事をしつつやっていたんですよ。

まあ、オープンソースだし、GPLだし、まあ良いかと思いながらやっていた所に、Automatticに買収されるというビッグウェーブが2015年の5月に!

それからは、あれよあれよと、 WooCommerce にほぼ絞り込んでのお仕事が出来るようになったと。まあ、フルボディー3Dスキャナのビジネスもやっているので、こちらの仕事もしていますが、全然先行投資中なので、ほぼ無給でして、今は WooCommerce で生活が出来ている感じです。

今年は3Dの仕事などもあったので、2回目のWooConfはオンラインでの参加になりましたが、色々なdeveloperとお友達になれて、WooCommerce を盛り上げていきたいなと。世界的にも日本的にも。

WooCommerceをキーにして、日本のサービスを世界規模にスケールすることなどを考えて今も進めておりますが、ちょっと多くの方に納期などでご迷惑をおかけしているのですが、頑張ってやらないといけないなと思いながら11月末に39度の熱がある状態でこのブログを書いているのは、ナ・イ・ショです。笑

ちなみに今は、 WooCommerce for Japanのアクティブインストール数があと少しで2,000になります。今年のクリスマスプレゼントに2,000アクティブインストールになれば良いなと、こっそり思っている明石鳥羽のPTA会長兼まちづくり協議会副会長でした。

それでは、明日はなんと!あの!WordPressセミナートップ講師であり、複数の著書を書いている星野さんが書いてくれるそうです!星野さんは先日WooCommerceの販売サイトを構築されたので、構築した際の色々な話が聞けるのではないかと?あれ?サイトはどこだ?分からない。爆

乞うご期待!では!

 

WooCommerce固有ページでの条件関数

WooCommerceのプラグインを作っていたのですが、ちょっとバグが発生して、お!という事が起こって、その解決方法をみつけたので、書いておきます。

ちょっと決済周りのページで決済処理をするプログラムを書いていて、エラー処理の必要があって、エラーしたらユーザーに分かるようにwc_add_noticeという関数を使って、表示する処理をしていたのです。普通に使っていれば、問題なかったのですが、CSVファイルで注文データを取り込もうとするとStatusを登録する処理をする際に決済処理をしてしまうのでその際にエラーが出るという状態だったので。

なるほど、じゃあ、決済ページの時だけ wc_add_notice を出す処理をしないといけないという事で、WordPressでは、is_home()とかあるので、WooCommerceでも定義関数があるんじゃないかなと思って調べてみたらやっぱりありました。

ここからはこちらのページの日本語説明だと思ってください。

Conditional Tags

固有ページの条件分岐関数

基本的に以下の関数は、該当した場合はtrueを返して、違う場合はfalseを返します。

また、条件詳細指定が出来る関数はis_product_category()is_product_tag()is_wc_endpoint_url()の3つだけです。

A WooCommerce page(WooCommerceのテンプレートでshortcodeなど使われるページ全部)
is_woocommerce()

The main shop page(ショップページ)
is_shop()

A product category page(商品カテゴリーアーカイブページ)
is_product_category()
is_product_category( ‘shirts’ )
is_product_category( array( ‘shirts’, ‘games’ ) )

A product tag page(商品タグアーカイブページ)
is_product_tag()
is_product_tag( ‘shirts’ )
is_product_tag( array( ‘shirts’, ‘games’ ) )

A single product page(商品詳細ページ)
is_product()

The cart page(カートページ)
is_cart()

The checkout page(支払いページ)
is_checkout()

Customer account pages(マイアカウントページ)
is_account_page()

An endpoint(エンドポイント)
is_wc_endpoint_url()
エンドポイント全ての場合
is_wc_endpoint_url( ‘order-pay’ )
注文支払いを表示した時
is_wc_endpoint_url( ‘order-received’ )
注文受信を表示した時
is_wc_endpoint_url( ‘view-order’ )
注文表示を表示した時
is_wc_endpoint_url( ‘edit-account’ )
アカウント編集を表示した時
is_wc_endpoint_url( ‘edit-address’ )
住所編集を表示した時
is_wc_endpoint_url( ‘lost-password’ )
パスワードの再発行ページを表示した時
is_wc_endpoint_url( ‘customer-logout’ )
ログアウトページを表示した時
is_wc_endpoint_url( ‘add-payment-method’ )
支払い方法を追加(選択)した時

An ajax request(Ajaxを呼び出しているページ)
is_ajax()

関数の使用例

カテゴリーが違う場合に表示する内容を変える形での関数の例です。

if ( is_product_category() ) {
    if ( is_product_category( 'shirts' ) ) {
        echo 'Hi! Take a look at our sweet tshirts below.';
    } elseif ( is_product_category( 'games' ) ) {
        echo 'Hi! Hungry for some gaming?';
    } else {
        echo 'Hi! Check our our products below.';
    }
}