Woocommerce 配送エリア方法をカスタマイズする
<p>私はカスタムの配送地域メソッドを作成するためのソリューションを実装する適切な方法を見つけるために数時間を費やしました。 </p>
<p>トイレ:7.2.2
仕事のストレス: 6.0.3</p>
<p>サイトは良好な状態にあり、権限エラーなどはありません (入手可能な情報のみが更新されます)</p>
<p>次のような多くのソースを使用しました。
https://woocommerce.github.io/woocommerce-rest-api-docs/?php#shipping-zone-methods</p>
<p>https://github.com/woocommerce/woocommerce/wiki/ Shipping-Method-API#properties</p>
<p>https://gist.github.com/mikejolley/3b37b9cc19a774665f31</p>
<p>https://code.tutsplus.com/tutorials/create-a-custom-shipping-method-for-woocommerce--cms-26098</p>
<p>他にもたくさんあります。 </p>
<p>基本的に、カスタム送料関数を備えた配送ゾーンメソッド (プラグイン) を作成するためのサンプルコードが必要です。私たちは Woocommerce Easy Booking に基づいており、メタデータに数日かかるため、それを処理するために woocommerce 公式プレミアム プラグインの 1 つを使用できません。</p>
<p>我最终得了以下代:</p>
<pre class="brush:php;toolbar:false;"><?php
if (!define('ABSPATH')) {
出口; // 直接アクセスした場合は終了
}
関数 your_shipping_method_init()
{
if (!class_exists('WC_Your_ Shipping_Method')) {
クラス WC_Your_ Shipping_Method は WC_ Shipping_Method を拡張します
{
/*** 配送クラスのコンストラクター
*
* @アクセスパブリック
* @return void*/
パブリック関数 __construct()
{
$this->id = 'diet_day_shipping'; // 配送方法の ID。ユニークなはずです。
$this->method_title = __('ダイエット日ごとの送料'); // 管理者に表示されるタイトル
$this->method_description = __('予約ごとの送料'); // admin に表示される説明
$this->有効 = "はい"; // これは設定として追加できますが、この例では強制的に有効になっています
//$this->title = "簡単予約 1 日あたりの発送"; // これは設定として追加できますが、この例では強制されています。
//$this->rates = array('calculate_shipping');
$this->supports = array(
'配送ゾーン',
'インスタンス設定',
'インスタンス設定モーダル',
);
$this->instance_form_fields =
配列(
'タイトル' =>配列(
'タイトル' => __('メソッドのタイトル'),
'タイプ' => '文章'、
'説明' => __('これは、チェックアウト中にユーザーに表示されるタイトルを制御します。'),
'デフォルト' => __('あなたのダイエットのための毎日の配達'),
)、
'コスト' =>配列(
'タイトル' => __('料金')、
'タイプ' => '番号'、
'説明' => __('これにより 1 日あたりのコストが制御されます。'),
'デフォルト' => 7、
)
);
$this->init();
$this->title = $this->get_option('title');
$this->コスト = $this->get_option('コスト');
add_action('woocommerce_update_options_shipping_' . $this->id, array($this, 'process_admin_options'));
}/*** 設定を初期化します
*
* @アクセスパブリック
* @return void*/
関数初期化()
{
// 設定APIをロードする
$this->init_form_fields();
// 定義した設定がある場合は、管理者に設定を保存します
add_action('woocommerce_update_options_shipping_' . $this->id, array($this, 'process_admin_options'));
}
関数 init_form_fields()
{
$this->form_fields = array(
'タイトル' =>配列(
'タイトル' => __('メソッドのタイトル'),
'タイプ' => '文章'、
'説明' => __('これは、チェックアウト中にユーザーに表示されるタイトルを制御します。'),
'デフォルト' => __('毎日のダイエットの送料'),
)、
'コスト' =>配列(
'タイトル' => __('料金')、
'タイプ' => '番号'、
'説明' => __('これにより 1 日あたりのコストが制御されます。'),
'デフォルト' => 7、
)
);
}
/*** 計算_配送関数。
* @param array $package (デフォルト: array())*/
パブリック関数 Calculate_shipping($package = array())
{
//テスト用のハードコード
$shipping_number = 7;
//おそらく最終的な送料を計算する方法
/*
foreach ($package['contents'] as $item_id => $values) {
$_product = $values['データ'];
$shipping_number = $shipping_number $_product->wceb_get_product_booking_duration() * $values['数量'];
}*/
$this->add_rate(array(
'id' => $this->id 。 $this->instance_id、
'ラベル' => 「ドスタワ ポザ ワワ」、
'コスト' => $shipping_number、
));
}
}
}
}
add_action('woocommerce_shipping_init', 'your_shipping_method_init');
関数 add_your_shipping_method($methods)
{
$methods['diet_day_shipping'] = 'WC_Your_shipping_Method';
$methods を返します。
}
add_filter('woocommerce_shipping_methods', 'add_your_shipping_method');</pre>
<p>私たちは 2 つの設定が必要です (エリア、方法内でのみ可能で、全体的な必要はありません) マーク (顧客に表示) とアダルト - 多くの人の滞在数の価値を把握しています。
<p>私たちが考えている「制限」ボタンは、中継エリアの方法に関して以下に示す方法であり、その中にこれらの値を設定できます。</p>
<p>誰か私のコードの修正を手伝ってくれませんか? </p>
<p>現在、管理パネルに表示される設定オプションはありません。配送地域の方法行にも、sgipping 設定パネルにもありません。 </p>
<p>また、カスタム配送方法を使用してゾーンから郵便番号を送信すると、カートにはその郵便番号で利用できる配送方法がないことが表示されます)</p>