WooCommerce 支払い方法 追加(その2)

WooCommerce 支払い方法 追加(その2)

さて、「WooCommerce 支払い方法 追加(その1)」の続編です。
前回のプラグイン構造では複数の支払い方法追加がある場合は、支払い方法 毎にプラグインを作成、有効化していかないといけませんでした。
かなり非効率ですし、プラグイン数が多くなるのは好きじゃないので、今回はその部分の改良版のメモとなります。
前回作成した支払い方法追加のクラスはほぼそのまま使えます。

構造は以下のようなイメージになります。

20151127-pict01

woocommerce-higa-pack(フォルダ)
-woocommerce-higa-pack.php
-i18n(フォルダ)
–languages(フォルダ)
-includes(フォルダ)
–class-wc-dependencies.php
–gateways(フォルダ)
—class-wc-gateway-basic-bank-transfer.php
—class-wc-gateway-store.php

ファイル構造はWooCommerce本体を参考にしました。
いくつかのコードをメモ…

20151127-pict02

プラグインメインファイル
woocommerce-higa-pack.php

● 依存関係に対応

WooCommerceの拡張プラグイン 「woocommerce-gateway-amazon-payments-advanced」よりclass-wc-dependencies.phpを丸ごともってきました。
このプラグインはWooCommerceが無いと意味がないプラグインです。上記ファイルを利用する事でWooCommerceの有無をチェック出来ます。

function is_woocommerce_active() {

}

※ 無い場合は注意文章を管理画面内に表示
function wc_higa_pack_notice() {

}

● 複数支払い方法を追加

メインのプラグインファイルから支払い方法追加の部分を切り離して保存することで複数の支払い方法クラスを読み込みします。

private function _includes() {
include_once( plugin_dir_path( __FILE__ ) . ‘includes/gateways/class-wc-gateway-store.php’ );
include_once( plugin_dir_path( __FILE__ ) . ‘includes/gateways/class-wc-gateway-basic-bank-transfer.php’ );
}

各支払い方法のクラスファイル

切り離した支払い方法のクラスファイルは前回のものに少し手を加えるだけで流用出来ました。

1. アクションフックの削除とその関数を外す

削除
add_action( ‘plugins_loaded’, ‘your_payment_function);

関数からクラス部分を取り出して残す
class WC_Gateway_Basic_Bank_Transfer_Higa_Pack extends WC_Payment_Gateway {

}

2. 言語ファイル 指定部分はプラグインメインファイルで指定しているので削除

という感じです。
少し説明が難しく、長くなりましたが、とりあえず支払い方法追加の検証は終了…
どうにかなりそうです。

コードについて、間違っているところや別の方法などがあるという方は、ぜひコメントいただければと思います。

PS:今回でオブジェクト指向の勉強が必要と感じました。 汗… 再勉強中!!!