概要
woocommerce_shipping_init
アクションは、WooCommerceのカスタム配送方法を追加する際に使用されます。このフックは、WooCommerceの配送機能が初期化される際に呼び出され、独自の配送オプション(例:新しい配送方法、カスタム料金計算、特定の条件に基づく配送オプションの表示など)を登録するために利用できます。
以下は、woocommerce_shipping_init
アクションがよく使われる機能の例です。
- 新しい配送方法の登録
- カスタム配送料金の計算
- 特定の地域や条件に応じた配送オプションの追加
- 配送メソッドの設定に基づくビジネスロジックの実装
- 管理画面での配送方法設定のカスタマイズ
- サードパーティの配送サービスとの連携
構文
add_action('woocommerce_shipping_init', 'my_custom_shipping_method');
パラメータ
- なし
戻り値
- なし
使用可能なバージョン
- WooCommerce: 2.0以上
- WordPress: 4.0以上
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: 新しい配送方法の追加
このコードは、新しいカスタム配送方法をWooCommerceに追加します。
add_action('woocommerce_shipping_init', 'register_my_custom_shipping_method');
function register_my_custom_shipping_method() {
if ( ! class_exists( 'WC_My_Custom_Shipping_Method' ) ) {
class WC_My_Custom_Shipping_Method extends WC_Shipping_Method {
public function __construct() {
$this->id = 'my_custom_shipping';
$this->method_title = __( 'My Custom Shipping' );
$this->method_description = __( 'A custom shipping method' );
$this->enabled = "yes";
$this->title = "My Custom Shipping";
$this->init();
}
public function init() {
// Add settings here
}
}
}
}
リンク先: http://example.com
サンプル2: 配送料金のカスタマイズ
このコードは、特定の条件に基づいて配送料金をカスタマイズします。
add_action('woocommerce_shipping_init', 'add_custom_shipping_rates');
function add_custom_shipping_rates() {
if ( ! class_exists( 'WC_Custom_Rate' ) ) {
class WC_Custom_Rate extends WC_Shipping_Method {
public function __construct() {
$this->id = 'custom_rate';
$this->method_title = __( 'Custom Rate' );
$this->init();
}
public function calculate_shipping( $package = array() ) {
$rate = array(
'id' => $this->id,
'label' => $this->method_title,
'cost' => '10.00',
'package' => $package,
);
$this->add_rate( $rate );
}
}
}
}
リンク先: http://example.com
サンプル3: 地域に基づく配送オプションの追加
このコードは、特定の地域に基づいて配送オプションを追加します。
add_action('woocommerce_shipping_init', 'custom_shipping_by_region');
function custom_shipping_by_region() {
if ( ! class_exists( 'WC_Custom_Shipping_By_Region' ) ) {
class WC_Custom_Shipping_By_Region extends WC_Shipping_Method {
public function __construct() {
$this->id = 'custom_shipping_by_region';
$this->method_title = __( 'Shipping by Region' );
$this->init();
}
public function calculate_shipping( $package = array() ) {
// Logic based on region
$rate = array(
'id' => $this->id,
'label' => 'Regional Rate',
'cost' => '15.00',
);
$this->add_rate( $rate );
}
}
}
}
リンク先: http://example.com
サンプル4: 管理画面設定のカスタマイズ
このコードは、WooCommerceの管理画面での配送方法設定をカスタマイズします。
add_action('woocommerce_shipping_init', 'custom_shipping_admin_settings');
function custom_shipping_admin_settings() {
if ( ! class_exists( 'WC_Custom_Shipping_Settings' ) ) {
class WC_Custom_Shipping_Settings extends WC_Shipping_Method {
public function __construct() {
$this->id = 'custom_shipping_settings';
$this->method_title = __( 'Custom Settings' );
$this->init();
}
public function init() {
// Add custom settings fields
}
}
}
}
リンク先: http://example.com
サンプル5: サードパーティサービスとの連携
このコードは、サードパーティの配送サービスと連携するための基本的なフレームワークを提供します。
add_action('woocommerce_shipping_init', 'connect_to_third_party_service');
function connect_to_third_party_service() {
if ( ! class_exists( 'WC_Third_Party_Shipping' ) ) {
class WC_Third_Party_Shipping extends WC_Shipping_Method {
public function __construct() {
$this->id = 'third_party_shipping';
$this->method_title = __( 'Third Party Shipping' );
$this->init();
}
public function calculate_shipping( $package = array() ) {
// Integrate with third-party service
$rate = array(
'id' => $this->id,
'label' => __( 'Third Party Rate' ),
'cost' => '20.00',
);
$this->add_rate( $rate );
}
}
}
}
リンク先: http://example.com